#include
#include
//#include
using namespace std;
//输出容器中的数据
void printVector(vector v) {
for (vector::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
//相当于数组
/int len = v.size();
for (int i = 0; i < len; i++) {
cout << v[i]<<" ";
}
cout << endl;/
}
//用swap可以收缩空间
void test01() {
vector v;
for (int i = 0; i < 1000; i++) {
v.push_back(i);
}
cout << “v的容量为:” << v.capacity() << endl; //容器占用的内存空间
cout << “v的大小为:” << v.size() << endl; //容器实际数据的个数
vector(v).swap(v);//相当于用v目前所用个数来初始化一个新容器用v目前所用个数 cout << "v的容量为:" << v.capacity() << endl; cout << "v的大小为:" << v.size() << endl;
}
int main() {
vector v1; //无参构造
for (int i = 0; i < 10; i++) {
v1.push_back(i);
}
int i = v1.front();
cout << “第一个元素为:” < int j = v1.back();
cout << “最后一个元素为:” << j << endl;
printVector(v1); vectorv2(5,10); //构造函数将n个elem拷贝给本身 //sort(v2.begin(), v2.end());//排序v2从小到大 //reverse(v2.begin(), v2.end()); //将v2元素倒置 vector ::iterator it = find(v1.begin(), v1.end(), 10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置 if (it != v1.end()) cout << *it << endl; else cout << "can not find" << endl; v2.insert(v2.begin(), 20);//插入操作,第一个参数是迭代器 v2.insert(v2.begin(), 3, 5);//v2头插入了3个5 v2.erase(v2.begin());//删除操作 //v2.erase(v2.begin(),v2.end())//清空 //v2.clear();//清空 printVector(v2); v1.swap(v2);//v1和v2互换 vector v3(v1.begin(), v1.end());//将v[begin(),end())区间中的元素拷贝给本身 vector v4(v3); //拷贝构造函数 vector v5; v5 = v3;//重载 operater = vector v6; v6.assign(v1.begin(), v1.end());//assign赋值 v6.assign(10, 10);//另一种使用方式 int a[6] = { 1,2,3,4,5,6 }; vector b(a, a + 6); // [) for (int i = 0; i <= b.size() - 1; i++) cout << b[i] << " "; cout << endl; int c = v2[1]; cout< }
//vector a;
//for (int i = 0; i < 10; i++)
// a[i] = i;
//这种做法以及类似的做法都是错误的。刚开始我也犯过这种错误,后来发现,下标只能用于获取已存在的元素,而现在的a[i]还是空的对象输出结果
第一个元素为:0
最后一个元素为:9
0 1 2 3 4 5 6 7 8 9
can not find
5 5 20 10 10 10 10 10
1 2 3 4 5 6
9
0
1
v1容器不为空
5 5 20 10 10 10 10 1010 10 10 10 10 10 10 10 10 10
v的容量为:1066
v的大小为:1000
v的容量为:1000
v的大小为:1000



