#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//容器: vector ,相当于一个数组
//迭代器: vector<int>::iterator
void show(vector<int> &v)
{
vector<int>::iterator itstart = v.begin();
vector<int>::iterator itend = v.end();
//遍历
/*while (itstart != itend)
{
cout << *itstart << endl;
itstart++;
}*/
for (vector<int>::iterator i = itstart; i != itend; i++)
{
cout << *i << " ";
}
cout << endl;
}
int main(void)
{
cout << "vector构造函数" << endl;
vector<int> v1; //默认构造函数
vector<int> v2(6,6); //vector(n, elem);构造函数将n个elem拷贝给本身
vector<int> v3(v2); //或vector<int> v3(v2.begin(),v2.end());vector(v.begin(), v.end());将v[begin(), end())区间中的元素拷贝给本身
show(v2); show(v3); cout << endl;
cout << "赋值(重载=号,函数assign)" << endl;
v1 = v2; //或v1.operator=(v2);vector& operator=(const vector &vec);
show(v1); show(v2);
v2.assign(6, 5); //assign(n, elem);
v1.assign(v2.begin(), v2.end());
show(v1); show(v2); cout << endl;
cout << "获取容量和大小" << endl;
cout << v1.empty() <<endl;//判断是否为空,返回0,不为空。
cout << v1.capacity() << endl; //容器的容量
cout << v1.size() << endl; //返回容器中元素的个数
v1.resize(10,6); //容器变长,第二个参数填充新位置
show(v1); //resize(int num, elem);
v1.resize(5); //容器变短,超出容器长度的元素被删除
show(v1); cout << endl; //resize(int num);若容器变长,以默认值0填充新位置
cout << "插入和删除" << endl;
v2.push_back(6); //尾部插入元素
show(v2);
v2.pop_back(); //删除最后一个元素
show(v2);
v2.insert(v2.begin()+3,3,6); //insert(const_iterator pos, int count,ele);迭代器指向位置pos插入count个元素ele
show(v2);
v2.erase(v2.begin()+4); //删除迭代器指向的元素
show(v2);
v2.erase(v2.begin()+3,v2.begin()+5); //删除迭代器从start到end之间的元素
show(v2);
v2.clear(); //删除容器中所有元素
cout << v2.size() << endl << endl;
cout << "数据读取" << endl;
for (int i = 0; i < 6; i++)
{
v2.push_back(i+1);
}
show(v2);
cout << v2.at(2) << endl; //at(int idx); 返回索引idx所指的数据,idx从0算起
cout << v2[2] << endl; //中括号重载
cout << v2.front() << endl; //返回容器中第一个数据元素
cout << v2.back() << endl << endl; //返回容器中最后一个数据元素
//预留空间
v2.reserve(10); //容器预留len个元素长度,预留位置不初始化,元素不可访问
cout << v2.capacity() << endl;
show(v2);
system("pause");
return 0;
}