资料来源:《C++ Primer》
一、初始化
vector<int> veco; /// 空的 vector
const int size = 8;
const int value = 1024;
vector<int> vec1( size ); /// 每个元素都被初始化为 0
vector<int> vec2( size, value ); /// 每个元素都被动始化为 1024
int ia[4] = { 0, 1, 1, 2 }; /// 被初始化为 ia 的 4 个值
vector<int> vec3( ia, ia+4 ); /// vec3 的 size 为 4
vector<int> vec4( vec2 ); /// vec4 是 vec2 的拷贝
vector< string > svec;
svec = vec4; ///vector 可以被另一个 vector 初始化
int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
// 拷贝 3 个元素 ia[2], ia[3], ia[4]
vector<int> ivec(&ia[2],&ia[5]); /// vec3 的 size 为 3
//被传递给 ivec 的两个指针标记了用来初始化对象的值的范围 第二个指针总是指向要被
//拷贝的末元素的下一位置
二、遍历
1.使用下标遍历
#include <vector>
int size = 12; ///12个元素
vector<int> nVec( size );
for ( int ix = 0; ix < size; ++ix )
{
vec[ ix ] = ix; ///给vector中的各个元素赋值
}
2.使用迭代器遍历
#include <vector>
vector<int> nVec(12); ///vector中元素的个数
vector<int>::iterator iter = nVec.begin();
for ( int ix = 0; iter != nVec.end(); ++iter, ++ix )
{
*iter = ix; ///挨个给元素赋值
}
三、排序
sort( nVec.begin(), nVec.end() );
sort( nVec.begin(), nVec.begin()+nVec.size()/2 ); ///对nVec向量的前面一半进行排序
四、搜索
vector<int>::iterator found;
found = find( vec.begin(), vec.end(), search_value );
if ( found != vec.end() )
{
cout << "search_value found!\n";
}
else
{
cout << "search_value not found!\n";
}
五、反转
reverse( vec.begin(), vec.end() );
六、插入
//任何一个插入操作都将增加 vector 的大小 而不是覆盖掉某个现有的元素 这看起来好
//像是很显然的 但是 下面的错误在初学者中并不少见
const int size = 7;
int ia[ size ] = { 0, 1, 1, 2, 3, 5, 8 };
vector< int > ivec( size );
for ( int ix = 0; ix < size; ++ix )
ivec.push_back( ia[ ix ]);
//程序结束时 ivec 包含 14 个元素 ia 的元素从第八个元素开始插入