C++中vector容器的常用操作方法实例总结

2020-01-06 15:15:51刘景俊

7 合并两个顺序容器


std::vector<line>::iterator i1 = v1.begin(), i2 = v2.begin(); 
while(i1 != v1.end() && i2 != v2.end()) 
{ 
  if(i1->index == i2->index) 
  { 
    line t = { i1->index, i1->value1, i2->value2 } 
    v3.push_back(t); 
    ++i1; 
    ++i2; 
  } 
  else if(i1->index > i2->index) 
  { 
    i2->value1 = 0; 
    v3.push_back(*i2); 
    ++i2; 
  } 
  else 
  { 
    i1->value2 = 0; 
    v3.push_back(*i1); 
    ++i1; 
  } 
} 
 
while(i1 != v1.end()) 
  v3.push_back(*(i1++)); 
 
while(i2 != v2.end()) 
  v3.push_back(*(i2++)); 

9 排序


// alg_sort.cpp 
// compile with: /EHsc 
#include <vector> 
#include <algorithm> 
#include <functional>   // For greater<int>( ) 
#include <iostream> 
 
// Return whether first element is greater than the second 
bool UDgreater ( int elem1, int elem2 ) 
{ 
  return elem1 > elem2; 
} 
 
int main( ) 
{ 
  using namespace std; 
  vector <int> v1; 
  vector <int>::iterator Iter1; 
 
  int i; 
  for ( i = 0 ; i <= 5 ; i++ ) 
  { 
   v1.push_back( 2 * i ); 
  } 
 
  int ii; 
  for ( ii = 0 ; ii <= 5 ; ii++ ) 
  { 
   v1.push_back( 2 * ii + 1 ); 
  } 
 
  cout << "Original vector v1 = ( " ; 
  for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) 
   cout << *Iter1 << " "; 
  cout << ")" << endl; 
 
  sort( v1.begin( ), v1.end( ) ); 
  cout << "Sorted vector v1 = ( " ; 
  for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) 
   cout << *Iter1 << " "; 
  cout << ")" << endl; 
 
  // To sort in descending order. specify binary predicate 
  sort( v1.begin( ), v1.end( ), greater<int>( ) ); 
  cout << "Resorted (greater) vector v1 = ( " ; 
  for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) 
   cout << *Iter1 << " "; 
  cout << ")" << endl; 
 
  // A user-defined (UD) binary predicate can also be used 
  sort( v1.begin( ), v1.end( ), UDgreater ); 
  cout << "Resorted (UDgreater) vector v1 = ( " ; 
  for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) 
   cout << *Iter1 << " "; 
  cout << ")" << endl; 
} 


Original vector v1 = ( 0 2 4 6 8 10 1 3 5 7 9 11 ) 
Sorted vector v1 = ( 0 1 2 3 4 5 6 7 8 9 10 11 ) 
Resorted (greater) vector v1 = ( 11 10 9 8 7 6 5 4 3 2 1 0 ) 
Resorted (UDgreater) vector v1 = ( 11 10 9 8 7 6 5 4 3 2 1 0 ) 

10  清空所有元素


m_itemVector.clear(); 

11 遍历


vector<ITEM_CHECK>::iterator iter=m_itemVector.begin(); 
for(i=0;iter!=m_itemVector.end();iter++,i++) 
{ 
  if(iter->flag==-1) 
  { 
    break; 
  } 
  iter->flag=1; 
} 

vector<ITEM_CHECK>::iterator iter=m_itemVector.begin(); 
for(i=0;iter!=m_itemVector.end();iter++,i++) //先全部取消 
{ 
  iter->flag=0; 
}