vector容器常用方法
来源:互联网 发布:创维网络电视50价格 编辑:程序博客网 时间:2024/06/04 18:35
- 容器简介
- 定义及初始化
- 末尾插入元素
- 遍历 size 函数是可以动态增加的
- 通过下标操作增加改变vector内容不是安全的操作
- 仅能对已存在元素进行下标操作不存在会crash
- 将元素一个容器复制给另外一个容器类型必须匹配容器类型和元素类型必须相同
- 迭代器简介
- 定义
- begin和end操作
- 迭代器的自增和解引用操作
- 迭代器的算术操作
- const_iterator 只读
- 高级用法
- 容器元素类型必须满足如下两个约束
- 顺序容器的操作
- 添加元素的操作
- 避免存储end操作返回的迭代器
- 关系运算符
- 容器大小的操作
- font和back操作
- 删除元素
- capacity和reserve
容器简介
定义及初始化
vector<int> vec(5,100);vector<string> strVec(10,"hello");
末尾插入元素
vec.push_back(102); strVec.push_back("what");
遍历 size() 函数是可以动态增加的
for(vector<int>::size_type ix=0;ix<vec.size(); ix++) { cout<<vec[ix]<<endl; vec.push_back(ix+10); cout<<"size is"<<vec.size()<<endl; if(vec.size()==10) { break; } } for(vector<string>::size_type jx=0;jx<strVec.size();jx++) { cout<<strVec[jx]<<endl; }
通过下标操作增加改变vector内容,不是安全的操作
vector <int> vec2(10); cout<<vec2[9]<<endl; cout<<vec2[10]<<endl;
仅能对已存在元素进行下标操作,不存在会crash
vector<int> emptyVec;//cout<<emptyVec[0]<<endl; error
将元素一个容器复制给另外一个容器,类型必须匹配,容器类型和元素类型必须相同
vector<int> vecCopy(vec); for(vector<int>::size_type i=0;i<vecCopy.size();i++) { cout<<vecCopy[i]<<endl; }
迭代器简介
所有标准库容器都支持迭代器,但只有少数的容器支持下标操作
定义
vector<int>::iterator iter;
begin和end操作
begin返回迭代器指向的第一个位置,end指向vector的末端元素的下一个
vector<string>::iterator iBegin=strVec.begin();vector<string>::iterator iEnd=strVec.end();
迭代器的自增和解引用操作
++iter指向第二个元素
*iter指向当前元素
cout<<*iBegin<<endl; cout<<*(iEnd-1)<<endl; for(;iBegin<iEnd;iBegin++) { cout<<*iBegin<<endl; }
迭代器的算术操作
iter+n iter-n
iter1-iter2
string str("richard"); *(iBegin+3)=str; cout<<*(iBegin+3)<<endl; cout<<iEnd-iBegin<<endl; vector<string>::iterator mid=iBegin+strVec.size()/2; cout<<*mid<<endl ;
const_iterator 只读
高级用法
容器元素类型必须满足如下两个约束
元素类型必须支持赋值运算
元素类型的对象必须可以复制
除了引用类型和IO标准库类型外,所有内置内置类型和复合类型都支持容器
顺序容器的操作
begin() 返回一个迭代器,指向容器的第一个元素
end()指向最后一个元素 ,rbegin()逆序迭代器,指向容器的最后一个元素,rend()指向容器第一个元素前面位置
添加元素的操作
list,vector和dequeue支持如下操作
c.push_back(t); 在容器c末尾添加元素
list和dequeue 支持push_fron(t); 在容器c的最前面添加元素
list<int> ilist; for(size_t ix=0;ix<4;ix++){ ilist.push_front(ix); } for(list<int>::iterator iter=ilist.begin();iter!=ilist.end();iter++){ cout<<*iter<<endl; }
insert操作实现一组更通用的方法,实现在容器内任意制定的位置插入新的元素
vector<string> strVec; //第一种情况 ,参数是位置和内容 strVec.insert(strVec.begin(),"yang"); //第二种情况,参数是数量和内容 strVec.insert(strVec.begin(),1,"richard"); for(int i=0;i<strVec.size();i++){ // cout<<strVec[i]<<endl; } //第三种情况,参数是指针 string sarray[4]={"hello","world","hello","fat"}; strVec.insert(strVec.begin(),sarray+1,sarray+3); for(i=0;i<strVec.size();i++){ cout<<strVec[i]<<endl; }
避免存储end操作返回的迭代器
当向vector添加元素时,end失效,内存地址发生了改变,此时千万不用使用存储end操作的迭代器
关系运算符
比较的容器必须具有相同的容器类型,而且元素类型也必须相同
容器大小的操作
size()返回容器的长度
empty()标记容器大小是否为零
resize(n)调整容器大小,使其容纳n个元素。
font和back操作
font()返回容器的第一个元素
back()返回容器的最后一个元素
vector<int> vec(5,10); cout<<vec.front()<<endl; vec.push_back(11); cout<<vec.back()<<endl;
删除元素
1、pop_back()删除容器的最后一个元素,返回void
2、erase(p)删除迭代器p所指向的元素
3、erase(b,e)删除迭代器b和e所标记范围内所有的元素,返回一个迭代器,指向被删除元素段后面的元素。如果e本身就是指向末端的下一个位置的迭代器,则返回的迭代器也指向同样的位置
4、clear() 删除容器内的所有元素
vector<int> vec(5,10); cout<<vec.front()<<endl; vec.push_back(11); cout<<vec.back()<<endl; vec.pop_back(); cout<<vec.size()<<endl; vec.erase(vec.begin()); cout<<vec.size()<<endl; vec.erase(vec.begin(),vec.end()); cout<<vec.size()<<endl; vec.clear(); cout<<vec.size()<<endl;
capacity和reserve
capacity操作获取容器需要分配更多空间之前能够存储的元素总数,reserve操作则告诉vector应该预留多少个元素的存储空间
vector<int> vec(5,10); for(int i=0; i<10; i++) { vec.push_back(i); } cout<<vec.capacity()<<endl; vector<int> vec2; vec2.reserve(30); cout<<vec2.capacity()<<endl;
- vector容器常用方法
- STL之vector向量容器常用方法
- 多种方法定义vector容器
- vector常用方法
- c++ vector常用方法
- vector的常用方法
- vector常用方法
- vector -- STL中容器的常用函数
- 容器vector的常用接口函数
- C++容器vector的常用成员函数
- 常用容器的方法
- 清空vector容器的方法
- vector向量容器中使用insert()方法
- C++ vector容器类型及初始化方法
- vector容器的三种遍历方法
- vector容器的三种遍历方法
- vector容器类型及初始化方法
- C++ vector容器类型及初始化方法
- java集合类介绍
- memcached的长链接模式
- hadoop 2.5.2 完全分布式集群环境搭建 (3)
- codeforces 549G G. Happy Line(贪心)
- ueditor图片上传,以及图片路径保存进数据库
- vector容器常用方法
- C语言程序设计笔记(四)
- IO-字节流与字符流
- maven 之中央仓库和私有仓库实战
- LeetCode 题解(111): Longest Valid Parentheses
- 零基础项目制学习python(二)
- Algorithms—123.Best Time to Buy and Sell Stock III
- BestCoder #45 1003 Dylans loves tree
- 查看android程序的CPU和内存消耗情况