c++ STL 之 vector

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013919153/article/details/82349593
void test_vector()
{
	int h[] ={1,2,3,4,5};
	vector<int> a(h,h+5); 
	vector<int> b(a.begin(),a.begin()+3); //使用迭代器初始化[,)
	vector<int> c(3,4);  //初始化3个4
	vector<int> d(b);	//拷贝构造函数
	vector<int> g(6);  //添加6个0

	cout<<"g size:"<<g.size()<<" g capacity:"<<g.capacity()<<" g max_size:"<<g.max_size()<<endl;

	cout<<"a:"<<endl;
	for(int i = 0 ; i < a.size() ; i++)
	{
		cout<<a[i]<<" ";	//使用数组方式访问
	}

	cout<<"b:"<<endl;
	for(auto tmp = b.begin(); tmp != b.end(); tmp++)
	{
		cout<<*tmp<<" ";	//使用迭代器遍历
	}

	cout<<"c:"<<endl;
	for each (int var in c)
	{
		cout<<var<<" ";		//使用for each 遍历,也可以返回引用修改对应值
	}

	cout<<"d:"<<endl;
	for(int tmp : d)
	{
		cout<<tmp<<" ";		//使用for遍历
	}

	cout<<"g:"<<endl;
	for(auto i = 0; i<g.size(); i++)
	{
		cout<<g.at(i)<<" ";	//使用at访问vector中的元素
	}

	g.push_back(9);		//在最后插入一个元素
	cout<<" first element:"<<g.front()<<endl;
	cout<<" last element:"<<g.back()<<endl;
	
	g.pop_back();		//删除最后一个元素
	cout<<" last element:"<<g.back()<<endl;
	
	g.insert(g.begin(),2); //在某个位置(这个位置为迭代器) 插入值 或者 n个值 或者 一段数值

	for (auto i = g.begin(); i != g.end();)
	{
		if (*i == 2)
		{
			i = g.erase(i); //返回删除元素最后一个的下一个元素,即将要访问的元素,故不需要自加
		}else
		{
			i++;
		}
	}

	g.clear(); //删除g中所有元素

	if (g.empty())
	{
		cout<< "g is empty"<<endl;
	}
	
	g.shrink_to_fit();	//将capacity缩小到实际大小size

	cout<<endl<<endl;
	/*
	 resize() 和 reserve()
	 前者重新分配大小为n个数据内存,如果n大于原始空间大小,用默认值或者特定值填写大于部分;如果小于,取前n个数据
	 后者如果n大于原始内存,重新分配;如果n小于原始内存,不做任何操作。

	 data()函数返回vector中第一个元素的指针,这样可以通过指针操作访问所有元素,一般不用。
	 swap()函数交换两个vector变量中的元素,也不怎么使用。
	 
	 emplace() 和 insert()
	 前者在容器中直接使用构造函数,后者使用复制构造。
	 */
}

猜你喜欢

转载自blog.csdn.net/u013919153/article/details/82349593