1 vector
vector翻译为向量,实际上更像变长数组。以下是vector的成员函数
vector<int> vi,old_v; // 定义一个vector对象
vi.begin(); // 取vi首元素地址
vi.end(); // 取vi尾元素地址的下一个地址
vi.size(); // 获得vector中元素的个数
vi.clear(); // 清空vector中的所以元素,size = 0
vi.push_back(x); // 在vector尾添加一个元素x
vi.pop_back(); // 删除vector的尾元素
vi.insert(vi.begin+2, -10) // 将-1插入vi[2]的位置
vi.insert(old_v.end(), vi.begin() + 1, vi.end()); // 把从第二个元素往后的vector元素插到old_v尾元素地址的下一个地址位置
vi.erase(vi.begin() + 3); // 删除vi[3]即删除第4个元素
vi.erase(vi.begin() +1, vi.begin() + 4); // 删除vi[1],vi[2],vi[3],即[first,last)内的元素
通过下标访问,跟普通数组一样。
通常与迭代器it结合使用,通过*it或*(it +i)形式访问vector元素。
vector<int>::iterator it; // 迭代器的定义,迭代器是一个广义指针
vector<int>::iterator it = vi.begin(); // 定位在vector首元素位置
it++; // 能实现自增自减操作
it!= vi.end; // 不支持it< vi.end()写法,只能用 !=
it = vi.begin() + 3; // 只有在vector和string中,才允许使用这种迭代器+整数写法
使用场景:作为数组使用,而且在一些元素个数不确定的场合可以很好地节省空间
2 set
set翻译为集合,是一个内部自动有序且不含重复元素的容器。一下为常用的成员函数:
set<int> st; // 定义一个set对象
st.begin(); // 取it首元素地址
st.end(