vector的使用(持续更新中。。。)

资料来源:《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 的元素从第八个元素开始插入

猜你喜欢

转载自blog.csdn.net/Johnisjohn/article/details/86694027
今日推荐