但行好事,莫问前程

vector

vector
1 生成构造
// constructing vectors
#include <iostream>
#include <vector>

int main ()
{
  // constructors used in the same order as described above:
  std::vector<int> first;                                // empty vector of ints
  std::vector<int> second (4,100);                       // four ints with value 100
  std::vector<int> third (second.begin(),second.end());  // iterating through second
  std::vector<int> fourth (third);                       // a copy of third

  // the iterator constructor can also be used to construct from arrays:
  int myints[] = {16,2,77,29};
  std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );

  std::cout << "The contents of fifth are:";
  for (std::vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';
//fifth=16 2 77 29
  return 0;
}


  std::vector<int> foo (3,0);
  std::vector<int> bar (5,0);
  bar = foo;
  foo = std::vector<int>();
  std::cout << "Size of foo: " << int(foo.size()) << '\n';//0
  std::cout << "Size of bar: " << int(bar.size()) << '\n';//3
2 操作
2.1 大小和容量
#include <iostream>
#include <vector>

int main ()
{
     std::vector<int> myvector;

     for (int i=1; i<=5; i++) myvector.push_back(i);
     //capacity
     std::cout<<myvector.size(); //return size of 5
     myvector.resize(9);         //change size become 9
     std::cout<<myvector.empty();//return 0,it is not empty
     myvector.reserve(100);      //change capacity to 100
     std::cout<<myvector.capacity();
     myvector.shrink_to_fit();   //let size equality capacity ,now capacity is 9

     return 0;
}
2.2 比较
2.3 find
2.4 截取部分
2.5 增,插,删,改
#include <iostream>
#include <vector>

int main ()
{
     std::vector<int> myvector;

     for (int i=1; i<=5; i++) myvector.push_back(i);
     //modify access
     myvector.assign(3,100);    //myvector={100,100,100}    reinit elemnet
     myvector.push_back(1);     //myvector={100,100,100,1}  add on last
     myvector.pop_back();       //myvector={100,100,100}    delete on last,return last element

     myvector.insert(myvector.begin()+2,200);  //200 at 3th element ,myvector={100,100,200,100}
     int ints[]={1,1,1};
     myvector.insert(iti,ints,ints+3);//myvector={100,100,1,1,1,200,100}

     myvector.erase(myvector.begin()+2);//myvector={100,100,1,1,200,100}
     myvector.erase(myvector.begin()+2,myvector.begin()+5);//myvector={100,100,100}
     myvector.clear();             //clear myvector={}

     return 0;
}
2.6迭代器
//begin() and end()
int main ()
{
    std::vector<int> myvector;
     for (int i=1; i<=5; i++) myvector.push_back(i);

     std::cout << "myvector contains:";
     for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
       std::cout << ' ' << *it;//1 2 3 4 5
     std::cout << '\n';

     return 0;
}


//rbegin() and rend()

#include <iostream>
#include <vector>

int main ()
{
    std::vector<int> myvector;
     for (int i=1; i<=5; i++) myvector.push_back(i);

     std::cout << "myvector contains:";
     for (std::vector<int>::reverse_iterator rit = myvector.rbegin() ; rit != myvector.rend(); ++rit)
       std::cout << ' ' << *rit;//5 4 3 2 1
     std::cout << '\n';

     return 0;
}

//可以使用auto
#include <iostream>
#include <vector>

int main ()
{
    std::vector<int> myvector;
     for (int i=1; i<=5; i++) myvector.push_back(i);

     std::cout << "myvector contains:";
     for (auto cit = myvector.cbegin() ; cit != myvector.cend(); ++cit)//can crbegin() 5 4 3 2 1
       std::cout << ' ' << *cit;//5 4 3 2 1
     std::cout << '\n';
     return 0;
}
2.7取值和位置
#include <iostream>
#include <vector>

int main ()
{
     std::vector<int> myvector;

     for (int i=1; i<=5; i++) myvector.push_back(i);
     //element access
     int intger1=myvector[2];       //operator[] ,intger1=2
     std::cout<<myvector.at(2);     //output 2
     std::cout<<myvector.back();    //last element 5
     std::cout<<myvector.front();   //first element 1
     int *p=myvector.data();        //p=&myvector[0]
     *p=10;p[2]=30;                 //now myvector={10,2,30,4,5}
     return 0;
}
2.8其他swap
// swap (vector overload)
#include <iostream>
#include <vector>

main ()
{
  unsigned int i;
  std::vector<int> foo (3,100);   // three ints with a value of 100
  std::vector<int> bar (5,200);   // five ints with a value of 200
  foo.swap(bar);//foo={200,200,200,200,200} and bar={100,100,100}
  return 0;
}
posted @ 2018-08-06 11:20  专业路过  阅读(131)  评论(0编辑  收藏  举报