STL容器方法接口
目录
vector数组
1. vector () ;
定义一个空向量
vector<string> fruits;
vector<int> scores;
vector<double> weights;
2. void push_back(const T& x);
在尾部添加元素(x的拷贝)
fruits.push_back("apples");
scores.push_back(99);
平均时间复杂度为常数
最坏时间复杂度为O(n):n次连续的调用
3. iterator insert(iterator position, const T& x);
迭代器位于向量头和尾后的下一个位置之间
将x插入到position所在的位置(x的拷贝放入迭代器位置所在的位置)。调用前,每个下标大于等于该位置的元素依次向后移动。
fruits.insert(itr,"kiwi");
//itr表示迭代器的位置
最坏时间复杂度为O(n)
注:push_back方法是insert的特例
4. void pop_back();
删除尾部的元素
scores: 95 70 80 100 60
scores.pop_back();
//操作后的顺序:
scores: 95 70 80 100
5. void erase(iterator position);
删除position位置的元素(位于迭代器位置上的元素被删除)。调用前,每个下标大于迭代器位置的项依次向前移动。
scores: 95 70 80 100 60
scores.erase(itr); //itr指向100所在的位置
//操作后的顺序:
scores: 95 70 80 60
最坏时间复杂度为O(n)
注:pop_back方法是erase的特例
6. unsigned size() const;
返回vectzor数组中项的数量(长度)
cout<<scores.size();
7. bool empty() const;
如果vector数组不包含任何项就返回true;否则,返回false。
while(!fruits.empty)
fruits.pop_back();
8. T& operator[] (unsigned n);
0 <= n < 向量中项的数量
返回对向量的从开头算起第n项的引用
cout<<fruits[1];
//输出fruits数组的第2项
9. iterator begin();
返回位于向量开头的迭代器
10. iterator end();
返回恰好位于向量最后一项之后的迭代器
fruits: "orange" "kiwi" "grapes"
//假设itr = fruits.end();
fruits.insert(itr,"lemons");
//操作后的结果为:
fruits: "orange" "kiwi" "grapes" "lemons"
如果vector数组为空,那么begin()返回的迭代器等于end()返回的迭代器。