STL-vector容器用法
来源:互联网 发布:设计衣服软件 编辑:程序博客网 时间:2024/06/05 14:55
头文件为#include<vector>
vector向量容器不仅可以像数组一样进行随机访问,还可以在尾部插入元素,还可以与map,pair等混合使用;是一种简单高效的容器。
1.创建vector对象;
(1)不指定容器的元素个数;
如定义一个来存储整形的容器;
vector<int> v;(2)创建时指定容器大小;
如定义一个来存储10个double类型元素的容器;
vector<double> v(10);(3)创建一个具有n个元素的向量容器对象,每个元素具有指定的初始值;
如定一个具有10个string元素的容器,每个元素的值都为hello;
vector<string> v(10,"hello");
(4)~vector<elemtype>();销毁数据释放资源;
2.尾部元素扩张;函数为push_back();意思为在vector容器最后添加一个新元素;
#include<bits/stdc++.h>//万能头文件包含所有头文件 using namespace std;int main(){vector<int> v;v.push_back(1);//在尾部插入一个1,现在容器为空,尾部也就是头部v.push_back(666);//在尾部再插入一个666现在容器有两个元素1,666 v.push_back(888);//同上cout<<v[0]<<" "<<v[1]<<" "<<v[2]<<endl;//采取下标方式访问容器中元素,跟数组相同 return 0;}3.容器元素访问;
(1)采取下标法访问;这中访问方式如同数组;坐标从0开始;
(2)采取迭代器访问;
#include<bits/stdc++.h>//万能头文件包含所有头文件 using namespace std;int main(){vector<int> v(3);v[0]=0;v[1]=1;v[2]=2;cout<<"下标法:"<<endl;cout<<v[0]<<" "<<v[1]<<" "<<v[2]<<endl;cout<<"迭代器法:"<<endl;vector<int>::iterator it;//定义迭代器变量 for(it=v.begin();it!=v.end();it++)//it如同平常用的循环变量i {cout<<*it<<" ";}cout<<endl; return 0;}3.元素的插入
插入函数为insert();要求插入位置,是元素的迭代器位置;
#include<bits/stdc++.h>//万能头文件包含所有头文件 using namespace std;int main(){vector<int> v(3);v[0]=0;v[1]=5;v[2]=10;v.insert(v.begin(),-1);//在最前面插入元素,元素值为-1v.insert(v.end(),15);//在最后面插入元素,元素值为15v.insert(v.begin()+2,2);//在开始第二个元素后面的位置插入元素,元素值为2vector<int>::iterator it;for(it=v.begin();it!=v.end();it++){cout<<*it<<" ";}cout<<endl;return 0;}4.元素的删除
删除函数为erase();删除某个元素或者某个区间的元素;
pop_back()删除最后一个位置的元素;
还有个clear()一次性删除所有元素,既清空容器;
#include<bits/stdc++.h>//万能头文件包含所有头文件 using namespace std;int main(){vector<int> v(10);for(int i=0;i<10;i++)//给容器中10个元素赋值为0-9 {v[i]=i;}v.erase(v.begin());//删除第一个元素v.pop_back();//删除最后一个元素 因为 v.end()返回指向容器最后一个数据单元的指针+1 vector<int>::iterator it;for(it=v.begin();it!=v.end();it++){cout<<*it<<" ";}cout<<endl;v.erase(v.begin()+2,v.begin()+4);//删除第三个到第五个元素for(it=v.begin();it!=v.end();it++){cout<<*it<<" ";}cout<<endl;return 0;}5.容器的容量大小;
函数为size();还有个empty()用来判断容器是否为空;
#include<bits/stdc++.h>//万能头文件包含所有头文件 using namespace std;int main(){vector<int> v(10);for(int i=0;i<10;i++)//给容器中10个元素赋值为0-9 {v[i]=i;}cout<<v.size()<<endl;//输出容器大小 cout<<v.empty()<<endl;//判断容器是否为空,空返回1,不为空返回0; v.clear();//清空容器 cout<<v.empty()<<endl;return 0;}
6.容器中值的取用;
at(index)函数;返回制定index位置的值;
front()返回第一个值;
back()返回最后一个值;
7.容器常用函数小结;vector<elemtype>v;
v.at(index); 返回指定index位置处的元素
v.front(); 返回容器最开始单元数据的引用
v.back(); 返回容器最后一个数据的引用
v.begin(); 返回指向容器最开始位置数据的指针
v.end(); 返回指向容器最后一个数据单元+1的指针
v.push_back(elem); 在容器最后位置添加一个元素elem
v.insert(p,elem); 在指针p指向的位置插入数据elem,返回指向elem位置的指针
v.insert(p,n,elem); 在位置p插入n个elem数据,无返回值
v.insert(p,begin,end) 在位置p插入在区间[begin,end)的数据,无返回值
v.pop_back(); 删除容器最后位置处的元素
v.erase(p); 删除指针p指向位置的数据,返回下指向下一个数据位置的指针(迭代器)
v.erase(begin,end); 删除begin,end区间的数据,返回指向下一个数据位置的指针(迭代器)
v.clear(); 清除所有数据
v.empty(); 判断容器是否为空,若为空返回true,否则返回false
v.size(); 返回当前容器中实际存放元素的个数
v.resize(); 重新设置vector的容量
v1.swap(v2); 交换两个容器中的数据
8.容器与其他STL工具嵌套使用时的注意;
在对容器排序时传的应该是迭代器位置如sort(v.begin(),v.end());
- stl vector容器用法
- STL-vector容器用法
- STL--vector容器用法
- STL:vector容器用法详解
- STL之二:vector容器用法详解
- C++STL中vector容器的用法
- STL之vector容器用法详解
- [转载]STL:vector容器用法详解
- C++STL中vector容器的用法
- C++ STL Vector容器的用法
- C++STL中vector容器的用法
- C++STL中vector容器的用法
- STL之二:vector容器用法详解
- C++STL中vector容器的用法
- C++STL中vector容器的用法
- C++ STL--vector容器用法详解
- STL之二:vector容器用法详解
- C++STL中vector容器的用法
- 源码解读(一): spring在web容器中的初始化过程
- pom.xml和conf/settings.xml
- JAVA——Object类
- Delphi 日期格式转换
- JPA入门例子(采用JPA的hibernate实现版本)
- STL-vector容器用法
- Linux中好用的链表
- 名企笔试:2017网易游戏笔试(赛马)2017-03-27 算法爱好者
- 红宝书 第8章整理——BOM
- [面试算法] 动态规划问题大杂烩
- 面试题(九)
- 事件驱动的简明讲解
- (9)桥接模式
- jsp fmt标签格式化Date时间