拥有 无参构造 拷贝构造 区间构造(两个迭代器表示的两个位置,半开半闭)析构
2 反向迭代器 reverse_iterator ,const_reverse_iterator,可以按相反顺序返回元素
.rbegin() 返回 指向倒数第一个元素的迭代器
.rend() 返回 指向倒数最后一个元素之后位置的迭代器
标准容器的迭代器都支持 * , -> ,= ,++, !=, == ,--
插入 .insert(pos,.element) pos表示插入位置,是个迭代器
删除 .erase(pos) .erase(pos_beg,pos_end)
清除 .clear()
大小 .size() .max_size() .empty()
交换 .swap(c2) 非成员函数swap(c1,c2) (成员函数会更好)
运算符: = > < >= <= == !=
#include <iostream> using namespace std; #include <vector> //容器名和头文件名是一样的 #include <algorithm> //输出指定区间中的所有数据 含头不含尾 template<typename T> void show(T beg,T end) { while(beg != end) { cout << *beg++ << ' '; } cout << endl; } int main() { int a[5] = {55,22,44,33,11}; vector<int> vi (a,a+5 ); //区间构造函数, 只是在复制了一份值到容器中,不会改变a cout << vi.size() << endl;//5 sort(vi.begin() ,vi.end()); //使用通用算法排序(<algorithm>) vector<int>::iterator b = vi.begin(); //内部类型迭代器 cout << "show vi: " << endl; show(vi.begin() ,vi.end() ); cout << "show a: " << endl; show(a,a+5); cout << "show reverse vi: " << endl; show(vi.rbegin() , vi.rend()); // ++是从尾到头移动 vi.insert(vi.begin(), 66); //插在最前面 show(vi.begin() ,vi.end() ); //66 11 22 33 44 55 b= vi.begin(); vi.insert(++++b,77); //插在第三个前面 show(vi.begin() ,vi.end() );//66 11 77 22 33 44 55 cout << "size:" << vi.size() << ' ' << "maxsize:" << vi.max_size() << endl; //size:7 maxsize:1073741823 vi.erase(--vi.end()); // 删除最后一个数据,因为.end()不是其中元素 show(vi.begin() ,vi.end() ); //66 11 77 22 33 44 vi.erase(++++vi.begin(), --vi.end()); //删除从第三个到最后一个前面的(含第三个,不含最后一个) show(vi.begin() ,vi.end() );//66 11 44 vector<int> v2(a,a+5); cout << "v2:" ; show( v2.begin(),v2.end() ); cout << "swap--------------------------" << endl; //效率最高 vi.swap(v2); cout << "vi : " ; show( vi.begin(),vi.end() ); cout << "v2 : "; show( v2.begin(),v2.end() ); cout << "swap--------------------------" << endl;//使用特化 效率略低 swap(vi,v2); cout << "vi : " ; show( vi.begin(),vi.end() ); cout << "v2 : "; show( v2.begin(),v2.end() ); cout << "swap--------------------------" << endl; //效率最低 vector<int> t =vi; vi = v2; v2 = t; cout << "vi : " ; show( vi.begin(),vi.end() ); cout << "v2 : "; show( v2.begin(),v2.end() ); vi.clear(); cout << "after clear, size:" << vi.size() << endl; show( vi.begin(),vi.end() ); //空 /*vector 仅有的 .capacity()*/ //这个下篇会写的 cout << "当前v2容量:" << v2.capacity() << endl; //5 最开始分配了5个元素的 cout << "当前元素个数" << v2.size() << endl; //3 删了2个只剩3个 cout << "当前vi已分配空间:" << vi.capacity() << endl; }