C++ vector的使用

vector是将元素置于一个动态数组中加以管理,他可以随机存取元素([]或at()等方法),vector在尾部添加或移除元素的速度非常快,但是在中间或头部插入或移除元素比较费时,vector采用模板类实现,容器存放的值是按值赋值的方式进行,所以在存入自定义对象时,所定义的对象必须提供拷贝构造函数,vector的元素可以重复,他是一种顺序容器

#include 
#include 
using namespace std;

void main()
{
	vector v1;

	cout << "v1的大小:" << v1.size() << endl;

	//在容器尾部插入元素
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);
	vector 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 v2 = v1;
	while (v1.size() > 0)
	{
		cout << "v1的尾部元素" << v1.back() << endl;// 获取尾部元素
		v1.pop_back();//删除尾部元素
	}

	//初始化vector
	vector v3(v2.begin(), v2.begin() + 2);
	vector v4(5, 9);//存放5个元素,每个元素都是9

	vector v5(10);
	for (int i=0;i< v5.size();i++)
	{
		v5[i] = i + 1;
	}
	
	//使用迭代器正向遍历vector
	for (vector::iterator it = v5.begin();it != v5.end(); it++)
	{
		cout << *it << "  ";
	}
	cout << endl;
	//使用迭代器逆向遍历vector
	for (vector::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::iterator it = v5.begin(); it != v5.end(); )
	{
		if (*it == 5)
		{
			it = v5.erase(it);//当删除迭代器所指向的元素的时候,erase删除函数会使it自动向下移动
		}
		else
		{
			it++;
		}
	}

	for (vector::iterator it = v5.begin(); it != v5.end(); it++)
	{
		cout << *it << "  ";
	}
	cout << endl;

	//插入
	v5.insert(v5.begin(), 3);

	system("pause");
}

 

你可能感兴趣的:(STL)