vector是将元素置于一个动态数组中加以管理,他可以随机存取元素([]或at()等方法),vector在尾部添加或移除元素的速度非常快,但是在中间或头部插入或移除元素比较费时,vector采用模板类实现,容器存放的值是按值赋值的方式进行,所以在存入自定义对象时,所定义的对象必须提供拷贝构造函数,vector的元素可以重复,他是一种顺序容器
#include <vector>
#include <iostream>
using namespace std;
void main()
{
vector<int> v1;
cout << "v1的大小:" << v1.size() << endl;
//在容器尾部插入元素
v1.push_back(1);
v1.push_back(3);
v1.push_back(5);
vector<int> vec(10);//定义vec大小
vec.push_back(100);//虽然vec没有赋值,但是100会被插入到vec的尾部,即第11位,前10个元素会被初始化为0
//输出容器大小
cout << "v1的大小:" << v1.size() << endl;
//输出容器的头部元素
cout << "v1的头元素:" << v1.front() << endl;
//修改容器的头元素和尾元素
v1.front() = 2;
v1.back() = 6;
//初始化vector
vector<int> v2 = v1;
while (v1.size() > 0)
{
cout << "v1的尾部元素" << v1.back() << endl;// 获取尾部元素
v1.pop_back();//删除尾部元素
}
//初始化vector
vector<int> v3(v2.begin(), v2.begin() + 2);
vector<int> v4(5, 9);//存放5个元素,每个元素都是9
vector<int> v5(10);
for (int i=0;i< v5.size();i++)
{
v5[i] = i + 1;
}
//使用迭代器正向遍历vector
for (vector<int>::iterator it = v5.begin();it != v5.end(); it++)
{
cout << *it << " ";
}
cout << endl;
//使用迭代器逆向遍历vector
for (vector<int>::reverse_iterator it = v5.rbegin(); it != v5.rend(); it++)
{
cout << *it << " ";
}
cout << endl;
//区间删除
v5.erase(v5.begin(), v5.begin() + 2);
//指定位置删除
v5.erase(v5.begin());
//删除指定元素
for (vector<int>::iterator it = v5.begin(); it != v5.end(); )
{
if (*it == 5)
{
it = v5.erase(it);//当删除迭代器所指向的元素的时候,erase删除函数会使it自动向下移动
}
else
{
it++;
}
}
for (vector<int>::iterator it = v5.begin(); it != v5.end(); it++)
{
cout << *it << " ";
}
cout << endl;
//插入
v5.insert(v5.begin(), 3);
system("pause");
}