这是我参与更文挑战的第7天,活动详情查看: 更文挑战
1. vector插入与删除
(1)push_back(elem)
尾部插入elem。
(2)pop_back()
尾部删除最后一个元素。
(3)insert(const_iterator pos,elem)
向pos位置添加一个elem,注意pos必须是迭代器类型。
(4)insert(const_iterator pos,int count,elem)
向pos位置添加count个elem。
(5)erase(const_iterator pos)
删除迭代器指向的元素。
(6)erase(const_iterator start,const_iterator end)
删除从start到end之间的元素。
(7)clear()
删除容器中所有元素。
上述七种方法示例:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printVector(vector<int>&v)
{
for(vector<int>::iterator it = v.begin();it != v.end();it++)
{
cout<< *it <<" ";
}
cout<<endl;
}
//vector容器赋值
void test()
{
vector<int>v1;//默认构造函数,无参数
for (int i = 0; i<10; i++)
{
//在尾部添加元素
v1.push_back(i);
}
printVector(v1);
//在尾部删除最后一个元素
v1.pop_back();
printVector(v1);
//在第二个元素位置添加100
v1.insert(v1.begin()+1,100);//insert()第一个参数必须是迭代器类型
printVector(v1);
//在最后一个元素位置添加5个0
v1.insert(v1.end(),5,0);
printVector(v1);
//删除第5个元素
v1.erase(v1.begin()+4);
printVector(v1);
//删除从第3个到最后的元素
v1.erase(v1.begin()+2,v1.end());
printVector(v1);
//删除容器内所有元素
v1.clear();
printVector(v1);
}
int main(){
test();
}
输出结果:
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8
0 100 1 2 3 4 5 6 7 8
0 100 1 2 3 4 5 6 7 8 0 0 0 0 0
0 100 1 2 4 5 6 7 8 0 0 0 0 0
0 100
2. vector容量和大小
(1) empty()
判断容器是否为空。
(2)capacity()
返回容器的容量。当加入元素超过容器容量时,容器容量会翻倍。
(3)size()
返回容器中元素个数。
(4)resize(int n)
重新指定容器的长度,若容器变长,则用默认值填充变长的部分。若容器变短,则超出容器长度的部分会被删除。
(5)resize(int n,elem)
与resize(int n)的区别在于,若容器变长,则用elem填充变长的部分。
上述5种方法的示例:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void printVector(vector<int>&v)
{
for(vector<int>::iterator it = v.begin();it != v.end();it++)
{
cout<< *it <<" ";
}
cout<<endl;
}
//vector容器赋值
void test()
{
vector<int>v1;//默认构造函数,无参数
for (int i = 0; i<10; i++)
{
v1.push_back(i);
}
printVector(v1);
//1. 判断容器是否为空
if(v1.empty()==0){
cout<<"不为空"<<endl;
}
else{
cout<<"为空"<<endl;
}
//2. 返回容器容量
cout<<v1.capacity()<<endl;
//3. 返回容器中元素个数
cout<<v1.size()<<endl;
//4. 重新指定容器长度为20
v1.resize(20);
printVector(v1);
cout<<v1.capacity()<<endl;//容量翻倍
//5. 重新指定容器长度为5
v1.resize(5);
printVector(v1);
cout<<v1.capacity()<<endl;//即便后面容器长度缩短,容量没有任何变化
//6. 重新指定容器长度为10,用55填充
v1.resize(10,55);
printVector(v1);
}
int main(){
test();
}
输出结果:
0 1 2 3 4 5 6 7 8 9
不为空
16
10
0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0
32
0 1 2 3 4
32
0 1 2 3 4 55 55 55 55 55
3. vector数据存取
除了用迭代器的方式得到数据,还可以通过以下方式获取数据。
(1)v1 [i]
返回索引i的元素。
(2)at(i)
返回索引i的元素。
(3)front()
返回容器中第一个数据元素。
(4)back()
返回容器中最后一个数据元素。