版权声明:本文为博主原创文章,未经博主允许不得转载。 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()
前者在容器中直接使用构造函数,后者使用复制构造。
*/
}