本次博客,我将记录C++中vector的用法
头文件:#include <vector>
初始化:
//以int为例
vector<int> v1;
vector<int> v2(v1); //v2中包含了v1中的所有副本
vector<int> v2=v1; //同上
vector<int> v3(n,value) //v3中包含了n个重复的元素,每个元素的值都是value
vector<int> v4(n) //v4包含了n个元素,这些元素默认为0
vector<int> v5{1,2,3} //列表初始化,v5包含了3个元素,分别为1,2,3
int a[]={1,2,3};
vector<int> v6(a,a+2);
//对于字符串
vector<string> v7={"Hello","World","!"};
vector<string> v8={"HelloWorld!"};
vector<string> v9=(5,"Hello") //v9包含5个"Hello"字符串
//二维数组构造方法
vector<vector > v1(3); //v1,3维
vector<vector > v2(3,vector(4)) //v2,3*4默认值为0
vector<vector > v3(3,vector(4,1)) //v3,3*4默认值均为1
vector<vector > v4={{1,2,3},{4,5,6}}; // 构造一个2*3 的二维vector,并赋值
如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串
插入新元素
push_back(),开辟新空间,插入新元素v1.push_back(3) //将元素3添加到数组尾部
insert(),可以先看这张图:
vector<int> v{1,2};
v.insert(v.begin()+1,3);//1 3 2
v.insert(v.end(),2,5); //1 3 2 5 5
vector<int> v1{7,8,9};
v.insert(v.end(),v1.begin(),v1.end());//1 3 2 5 5 7 8 9
v.insert(v.end(),{10,11}); //1 3 2 5 5 7 8 9 10 11
遍历访问
for(int i=0;i<v1.size();i++){
cout<<v1[i]<<' '; //v1.size()就是大小函数,用于获取v1的元素个数
v1[i]=3;
}
注意,只能对已经存在的元素进行赋值或修改,可以看下面代码:
vector<int> v;
v[0]=1 //出错,因为访问v[0]属于越界行为
删除元素
首先我们要明确容器vector中大小和容量的概念:
vector 的大小<=它的容董。当大小等于容量时,增加一个元素就会导致更多内存的分配。对于一个 vector 对象来说,可以通过调用size()和capacity()函数来得到它的大小和容量。它们返回的是我们自己定义的无符号整型值
v1.pop_back(); // 删除在v1的最后一个元素
v1.clear(); // 删除v1中所有元素
v1.erase(iterator iter); // 删除v1中迭代器指向元素
v1.erase(iterator first,iterator last); // 删除v1中[first,last)中元素
vector<int> v{1,2,3,4,5};
cout<<"v的大小:"<<v.size()<<' '<<"v的容量:"<<v.capacity()<<endl;
v.pop_back(); //删除末尾元素
cout<<"v的大小:"<<v.size()<<' '<<"v的容量:"<<v.capacity()<<endl;
for(int i=0;i<v.size();i++)
cout<<v[i]<<' ';
cout<<endl;
输出结果:
v的大小:5 v的容量:5
v的大小:4 v的容量:5
1 2 3 4
再看我们的erase()函数:
erase() 函数在删除元素时,会将删除位置后续的元素陆续前移,并将容器的大小减1
vector<int> v{1,2,3,4,5};
cout<<"v的大小:"<<v.size()<<' '<<"v的容量:"<<v.capacity()<<endl; //5 5
auto iter=v.erase(v.begin()+2); //删除元素3
cout<<"v的大小:"<<v.size()<<' '<<"v的容量:"<<v.capacity()<<endl; //4 5
for(int i=0;i<v.size();i++)
cout<<v[i]<<' ';
cout<<endl;
cout<<*iter<<endl; //iter指向元素4
输出结果:
v的大小:5 v的容量:5
v的大小:4 v的容量:5
1 2 4 5
4
其他的一些基本函数:
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/275666.html