1、基本概念
vector是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector是C++STL的一个重要成员,使用它时需要包含头文件:
1 #include <vector>
构造函数与初始化:
vector的构造函数用来构造vector容器,函数原型为:
1 vector<T> v; // 使用模板类实现,使用默认构造函数 2 vector(v.begin(), v.end()); // 将v的元素拷贝 3 vector(n, elem); // 使用n个元素,值为elem 4 vector(const vector & vec); // 拷贝构造函数
初始化示例如下:
1 vector<int> a(10);//定义了10个整型元素的向量,但未给出初始值 2 3 vector<int>a(10,0);//定义了10个整型元素初始值为0 4 5 vector<int> a(b);//用b向量来创建a向量,整体复制性赋值 6 7 vector<int> a(b.begin(),b.begin()+3);//定义a中前三个元素为b中前三个元素 8 9 set<string> temp; 10 vector<string> a(temp.begin(),temp.end());//将temp中的元素赋值给a 11 12 int arr[]={1,2,3,4,5}; 13 vector<int> res(arr,arr+5); 14 15 vector<int> res{1,2,3,4,5} 16 17 vector<int> arr{1,2,3,4,5}; 18 vector<int> res; 19 res=arr;//
2、vector一些操作
(1)赋值操作
对vector容器进行赋值。函数原型为:
1 vector& operator=(const vector &vec); // 重载等号操作符 2 assign(begin,end); // 将另一个数组的元素赋值给当前vector 3 assign(n,elem); // 将N个elem赋值给当前vector
示例如下:
1 vector<int> v1={1,2,3,4,5}; 2 3 vector<int> v2=v1; 4 5 vector<int> v3; 6 v3.assign(v1.begin(),v1.end()); 7 8 vector<int> v4; 9 v4.assign(10,9); //元素为10个9
(2)插入元素
函数原型为:
1 v.push_back(val); // 尾部插入元素val 2 v.insert(const_intertor pos,val); // 在迭代器指向位置Pos插入val 3 v.insert(const_intertor,int count,int val); // 在迭代器指向位置插入count个val
示例如下:
1 vector<int> v1; 2 v1.push_back(10); // 元素值为10 3 4 v1.insert(v1.begin(),100); // 元素值为100,10 5 6 v1.insert(v1.begin(),2,200); // 元素值为200,200,100,10
(3)删除
函数原型为:
1 pop_back(); // 删除最后一个元素 2 erase(const_iterator pos); // 删除迭代器指向的元素 3 erase(const_iterator start,const_iterator end); // 删除[start,end)之间的元素
示例如下:
1 vector<int> v={1,2,3,4,5,6}; 2 3 v.pop_back(); // 1,2,3,4,5 4 v.erase(v.begin()+2); // 1,2,4,5 5 v.erase(v.begin(),v.begin()+2); // 5,
(4) 数据存取
即获取vector中特定位置的数据。函数原型为:
1 at(int idx); // 获取索引idx位置的元素 2 operator[]; // 返回索引idx位置的元素 3 front(); // 返回容器中第一个元素 4 back(); // 返回容器中最后一个元素
示例如下:
1 vector<int> v={1,2,3,4,5,6}; 2 3 cout<<v.at(3)<<endl; // 4 4 cout<<v[4]<<endl; // 5 5 cout<<v.front()<<endl; // 1 6 cout<<v.back()<<endl; // 6
(5)容器大小
1 empty(); // 判断容器是否为空,若为空,返回值为1,否则返回值为0 2 capacity(); // 容器的数量 3 size(); // 容器中元素的个数 4 resize(int num); // 重新指定容器的长度为num,若容器边长,则使用默认值0填充新位置,若容器变短,末尾超过容器长度的元素被删除 5 resize(int num,int val); // 重新指定容器的长度为num,若容器变长,使用val填充,若容器变短,末尾超出的元素被删除
示例如下:
1 vector<int> v={1,2,3,4,5,6}; 2 3 cout<<v.empty()<<endl; // 0 4 cout<<v.capacity()<<endl; // 6 5 cout<<v.size()<<endl; // 6 6 v.resize(10); // 1,2,3,4,5,6,0,0,0,0 7 v.resize(12,20); // 1,2,3,4,5,6,0,0,0,0,20,20
(6) 交换vector元素
1 swap(vec); // 交换2个vector的元素
示例如下:
1 vector<int> v1={1,2,3,4,5,6}; 2 vector<int> v2={6,6,6}; 3 4 v1.swap(v2); // v1为6,6,6,v2为1,2,3,4,5,6
3、二维数组
二维数组只在初始化时有所区别,需要指明行列的值
1 vector<vector<int>>res(row,vector<int>(col,0)); // 初始化row*col数组,初始元素都为0 2 3 vector<vector<int>>res(row,vector<int>(col)); // 初始化row*col数组 4 5 vector<vector<int>> res; 6 res.size(r); 7 for(int i=0;i<r;i++) 8 res[i].resize(c);
标签:容器,begin,10,元素,v1,vector,使用 From: https://www.cnblogs.com/Zhouce/p/17982513