vector总结(带你学好vector)一

学习前,要复习字符串

一.字符串 

string s;//定义字符串
getline(cin,s);//读取一整行字符串
cin>>s;按照空格隔开的形式读取字符串
cin.get()//cingetline之间需要吃掉换行
s.size();//求取字符串s的长度
1】字符串查找
s.find( );小括号里面写字符串变量,或者指定的字符串,或者字符变量或者指定的字符
if(s.find(t)!=string::npos) 说明找到了,而且找到的位置下标就是pos=s.find(t);
2】字符串交换
s1.swap(s2);或者swap(s1,s2)
3】字符串清空
s.clear( );//小括号里面不需要写东西,这是一个动作,不可以写cout
4】字符串判空
s.empty( );//小括号里面不写东西返回值为真或者假
ifs.empty())说明s字符串是空的
if(!s.empty())说明s字符串是非空的 
5】字符串插入
s.insert(pos, str )
//其中pos表示要插入的位置的下标,
//str表示要插入的内容也就是字符串
6】字符串删除
s.erase(pos, len)
//其中pos表示要删除的开始位置的下标,
//len要删除的内容的长度
7】字符串替换
s.replace(pos,len,str);
//pos是指要替换的起始位置
//len是指要替换的字符串长度
//str是指用于替换的字符串
8】字符串取子串
s.substr(pos,len);//pos是指将要取出的子串的起始下标。
//len是指将要取出的子串的长度
9】字符串反转 //没有s.而且需要头文件algorithm
reverse(s.begin(),s.end())
//s.begin() 是指字符串开始的下标
//s.end() 是指字符串结束的下标的后一个
【9.5】将字符串中的一部分进行反转
reverse(s.begin()+st,s.end()-ed)
//sted是指需要反转的位置距离起止位置的距离
10】将一整个字符串进行从小到大排序(或者是说按照字典序进行排序)
sort(s.begin()s,end());
10.5】将字符串中的一部分进行排序
sort(s.begin()+st,s,end()-ed); //sted是指需要反转的位置距离起止位置的距离

二.vector 

数据结构大致分类:①集合结构、②线性结构、③树形结构、④图形结构
vector
一、vector
1.含义:vector C++标准库提供的变长数组类型,可以像数组一样进行数据存储和访问,但不需要
指定 vector 长度,会根据需要自动扩展容量; 内部存储方式与数组相同,是一段连续的存储空间。
2.特点:
1vector 无需指定长度,在使用的时候会自动调整
2可以像数组一样通过下标进行访问 (也可以通过迭代器进行访问)
3vector 类似 string,拥有很多函数,可以对 vector 进行快速操作
二、vector 使用 (基础函数)
1.头文件:#include <vector> using namespace std;
2.vector 定义:
vector<int> v;//定义一个 vector 变量 v v 是一个整型变长数组 (向量容器) 初始是空
vector<char> v1,v2;//定义两个 vector 变量 char 类型变长数组相当于 string (但没有 string 强大)
vector<double> v3(v);//定义一个 vector 变量 v3 并初始化为 v
vector<double> v3=v;//定义一个 vector 变量 v3 并初始化为 v
vector<int> v4(10,1);//定义一个 vector 变量 v4 初始化为 10 1
vector<int> v5(10);//定义一个 vector 变量 v5 长度为 10 ( 10 个元素, 元素初值都为0)vector<int> v[110];//定义一个 vector 数组 v v 中的每个元素 v[i]都是一 个 vector 变量 (类似字符串数
)
3.添加元素
push_back()
格式:v.push_back(t) ;
功能:在 v 的尾部添加新元素 t v是什么类型 t就是什么类型)
举例:
4.元素引用 (下标从 0 开始)
①引用方式
v[i] //下标访问 使用v 中下标为 i 的元素
v.front() //访问首元素
v.back() //访问尾元素
②举例
cout << v[4] << " ";//输出下标为 4 的元素 v 中的第五个元素cout << v.front() << " ";//输出首元素 相当于
cout<<v[0];
cout << v.back() << " ";//输出尾元素 相当于 cout<<v[v.size()-1];
5.常用函数
pop_back()
格式:v.pop_back() ;
功能:删除尾元素 (多个删除可以用 erase)
举例:v.pop_back();//删除 v 中的最后一个元素
size()
格式:v.size() ;
功能:计算当前v 的长度 (计算出v 中当前有多少个元素)
举例:int len = v.size();//计算当前 v 的长度并装到 len v.size()返回值为无符号整型
empty()
格式:v.empty() ;
功能:判断当前的v 是否为空,如果是空返回 true,否则返回 false
举例:if(v.empty()) cout << "empty";//如果 v 为空 输出 empty
resize()格式:v.resize(t) ;
功能:将 v 的长度设置为 t,不够的扩展,多的删除
举例:v.resize(5);// v 的长度设置为 5
clear()
格式:v.clear() ;
功能:清空 vector 变量,清除v 中所有元素
举例:v.clear();//清空当前 v
6.迭代器
vector 迭代器定义
vector<int>::iterator iter;//vector 对应的迭代器为 随机访问迭代器
迭代器 iter:用于指向vector 中元素的位置 (注意:位置是地址不是下标)
②迭代器的使用
v.begin();//返回指向 v 第一个元素的迭代器
v.end();//返回指向最后一个元素下一个位置的迭代器
运用:
iter = v.begin();//得到首元素的迭代器放到 iter
③使用迭代器访问元素
*iter;//访问当前 iter 指向的元素
运用:
iter = v.begin();//iter 是指向首元素 v[0]的迭代器
cout<< *iter << " " << *(iter+1) ;//相当于输出 v[0] v[1]④注意事项
只有使用迭代器才能存储位置;即 v.begin()返回值只能用迭代器 iter 来存储
注意v.end()返回的是尾元素的下一个位置的迭代器
三、vector 拓展常用函数
1.插入函数
insert()
格式:v.insert(iter,val) ;
功能:在迭代器 iter 所指向的元素前面插入数字val
此时 iter 指向的元素和后面的所有元素后移一位
举例:v.insert(v.begin()+1,5);//在第 2 个元素 v[1]前面插入数字 5
2.删除函数 erase()
①删除一个元素
格式:v.erase(iter) ;
功能:删除 iter 所指向位置的元素
②删除多个元素
格式v.erase(iter1,iter2) ;
功能:删除[iter1,iter2)之间的所有元素,包含 iter1 指向的元素,不包含 iter2 指向的元素举例:v.erase(v.begin()+1,v.begin()+5);//删除 v[1]~v[4]之间的所有元 素 后面元素前移
3.vector 排序
sort()
格式:sort(v.begin(),v.end(),cmp);//省略 cmp 默认从小到大排序
功能: vector 变量v 中所有元素按照 cmp 排序规则进行排序
举例:sort(v.begin()+3,v.begin()+10);// v[3]~v[9]按照从小到大顺序 排序
注:所有可以用下标访问的容器都可以用 sort 进行排序
4.迭代器使用 (获得相应元素位置)
通过 v.begin()加上下标 i,可以获 得对应元素 v[i]的位置(如:v.begin()+2 就是 v[2]的位置)
或者通过v.end()减去下标 i,也可以获得相应元素的位置 (或者说获得相应 元素的迭代器)
四、vector 使用场合
1.不确定数组大小
2.需要进行删除,随时添加元素等操作时,使用vector,利用相关函数可以快速实现
3.根据数据范围,需要开辟的数组比较大,但实际运用不需要那么多,可以利用 vector 的动态特性,
用多少开辟多少 (节省空间,降低空间复杂度)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值