标签:
1. 头文件
#include<vector>
2. 数组习惯用法
vector<int> iVec(10);//定义10个整数 iVec[0] = 10;//第一个元素赋值为10 vector<int> iVec(10, -1);// 定义10个整数,每个整数被初始化为-1 int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 }; vector< int > iVec( ia, ia+6 );//把 ia 的 6 个元素拷贝到 ivec 中 vector< int > ivec( &ia[ 2 ], &ia[ 5 ] );// 拷贝 3 个元素 ia[2], ia[3], ia[4]
3. STL 习惯用法
1) 在尾部插入元素,push_back
string word; while (cin>>word) { text.push_back(word); ... }
虽然还可以按照如下方式进行访问,
cout << "words read are: \n"; for ( int ix = 0; ix < text.size(); ++ix ) cout << text[ix] << ‘ ‘;
但是,经典方式是使用vector操作集中的begin()以及end()所返回的迭代器iterator,
cout<<"words read are:\n"; for (vector<string>::iterator it = text.begin(); it != text.end(); ++ it) { cout<<*it<<" "; } cout<<endl;
其中,iterator是标准库中的类,它具有指针的功能,而*it是对迭代器解引用,并访问其指向的实际对象,++it是向前移动,使得it指向下一个元素
2) 不能混用这两种习惯用法,比
vector<int> ivec; ivec[0] = 1024; //错误的 ,因为 ivec 还没有第一个元素,我们只能索引 vector 中已经存在的元素 size()操作返回 vector 包含的元素的个数
3) 类似地,当我们给定大小指定一个vector时,定义如下
vector<int> ia( 10 );
4. vector常用操作
#include<vector> // 头文件 vector<int> vec;//创建vector对象 vec.push_back(a); //尾部插入数字 cout<<vec[0]<<endl; //使用下标访问元素,0开始 vector<int>::iterator it; //使用迭代器访问元素 for (it = vec.begin(); it != vec.end(); it ++) cout<<*it<<endl; vec.insert(vec.begin()+i,a); //在第i + 1个元素前面插入a vec.erase(vec.begin()+2); //删除第3个元素 vec.erase(vec.begin()+i,vec.end()+j);//删除区间[i,j-1];区间从0开始 vec.size();// 向量大小 vec.clear(); // 清空
需要头文件,#include<algorithm>
reverse(vec.begin(),vec.end());//将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.) sort(vec.begin(),vec.end());//(默认是按升序排列,即从小到大).可以通过重写排序比较函数按照降序比较
标签:
原文地址:http://www.cnblogs.com/yiyi-xuechen/p/4425640.html