这个是测试代码:
# if 0
vector是单口容器
push_back():从尾部添加元素
pop_back():从尾部弹出元素
v.begin():容器的开始指针
v.end():容器的结尾指针
v.rbegin():指向最后一个元素的指针
v.rend():指向开头元素前面的元素的指针
内存动态增长的原理:
先分配一块更大的空间,将原来的元素全部复制到新分配的内存空间;释放原空间
# endif
# include<iostream>
# include<algorithm>
# include<vector>
using namespace std;
int arr[] = {2,4,1,5,9};
void printV(vector<int> v)
{
for(vector<int>::iterator it = v.begin();it != v.end();++it)
cout << (*it) << " ";
cout << endl;
}
void test1()
{//初始化
vector<int> v1;//初始化1
v1.assign(arr,arr+sizeof(arr)/sizeof(int));//赋值
//初始化
vector<int> v2(arr,arr+sizeof(arr)/sizeof(int));
vector<int> v3(v2.begin(),v2.end());
vector<int> v4(v2);
cout << "v1:" << endl;
printV(v1);
cout << "v2:" << endl;
printV(v2);
cout << "v3:" << endl;
printV(v3);
cout << "v4:" << endl;
printV(v4);
}
void test2()
{//赋值操作
vector<int> v(arr,arr+sizeof(arr)/sizeof(int));
vector<int> v1 = v;//重载等号
vector<int> v2;
v2.assign(v1.begin(),v1.end());
vector<int> v3;
v3.assign(arr,arr+sizeof(arr)/sizeof(int));
cout << "v1:" << endl;
printV(v1);
cout << "v2:" << endl;
printV(v2);
cout << "v3:" << endl;
printV(v3);
}
void test3()
{//swap()函数
int arr1[] = {100,200,300};
vector<int> v(arr1,arr1+sizeof(arr1)/sizeof(int));
vector<int> v2(arr,arr+sizeof(arr)/sizeof(int));
cout << "v:" << endl;
printV(v);
cout << "v2:" << endl;
printV(v2);
v.swap(v2);
cout << "------------" << endl;
cout << "v:" << endl;
printV(v);
cout << "v2:" << endl;
printV(v2);
}
void test4()
{//大小函数
vector<int> v;
v.assign(arr,arr+sizeof(arr)/sizeof(int));
if(!v.empty())
printV(v);
cout << "size:" << v.size() << endl;
cout << "capacity:" << v.capacity() << endl;
cout << "---------" << endl;
v.resize(10,1);
printV(v);
cout << "---------" << endl;
v.resize(2);
printV(v);
}
void test5()
{//用swap来缩减空间
vector<int> v;
for(int i = 0;i < 10;++i)
v.push_back(i);
printV(v);
cout << "size:" << v.size() << endl;
cout << "capacity:" << v.capacity() << endl;
cout << "---------" << endl;
vector<int> (v).swap(v);
cout << "size:" << v.size() << endl;
cout << "capacity:" << v.capacity() << endl;
}
void test6()
{//存取操作
vector<int> v;
v.assign(arr,arr + sizeof(arr)/sizeof(int));
cout << v.front() << endl;
cout << v.back() << endl;
for(int i = 0;i < v.size();++i)
cout << v[i] << " ";
cout << endl;
cout << "--------" << endl;
for(int i = 0;i < v.size();++i)
cout << v.at(i) << " ";
cout << endl;
}
void test7()
{//插入、删除
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
printV(v);
cout << "--------" << endl;
v.insert(v.begin() + 1,1);
printV(v);
cout << "--------" << endl;
v.insert(v.begin(),100);
printV(v);
cout << "--------" << endl;
v.erase(v.begin()+1);
printV(v);
cout << "--------" << endl;
v.clear();
cout << "size:" << v.size() << endl;
}
int main()
{
//test1();
//test2();
//test3();
//test4();
//test5();
//test6();
test7();
return 0;
}
附上每个test的运行结果:
test1:
test2:
test3:
test4:
test5:
test6: