// constructing vectors#include <iostream>#include <vector>int main ()
{
// constructors used in the same order as described above:std::vector<int> first; // empty vector of intsstd::vector<int> second (4,100); // four ints with value 100std::vector<int> third (second.begin(),second.end()); // iterating through secondstd::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 29return0;
}
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';//0std::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);
//capacitystd::cout<<myvector.size(); //return size of 5
myvector.resize(9); //change size become 9std::cout<<myvector.empty();//return 0,it is not empty
myvector.reserve(100); //change capacity to 100std::cout<<myvector.capacity();
myvector.shrink_to_fit(); //let size equality capacity ,now capacity is 9return0;
}
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={}return0;
}
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 5std::cout << '\n';
return0;
}
//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 1std::cout << '\n';
return0;
}
//可以使用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 1std::cout << ' ' << *cit;//5 4 3 2 1std::cout << '\n';
return0;
}
2.7取值和位置
#include <iostream>#include <vector>int main ()
{
std::vector<int> myvector;
for (int i=1; i<=5; i++) myvector.push_back(i);
//element accessint intger1=myvector[2]; //operator[] ,intger1=2std::cout<<myvector.at(2); //output 2std::cout<<myvector.back(); //last element 5std::cout<<myvector.front(); //first element 1int *p=myvector.data(); //p=&myvector[0]
*p=10;p[2]=30; //now myvector={10,2,30,4,5}return0;
}
2.8其他swap
// swap (vector overload)#include <iostream>#include <vector>
main ()
{
unsignedint i;
std::vector<int> foo (3,100); // three ints with a value of 100std::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}return0;
}