正在查看旧版本。 查看 当前版本.
与当前比较 查看页面历史记录
« 前一个 版本 12 下一个 »
介绍算法与算法复杂度,引入一些基础算法,这些算法不需要很详细的推导过程,虽然与后续的内容有关联,但大都可作为独立主题进行分类与学习。
本节的另一个重点是STL应用,所谓工卻善其事,必先利其器,STL容器与算法就是解决算法问题的利器,必须对STL应用非常熟悉,才可以在写代码时得心应手,事半功倍。
insert()是在指定位置之前插入,可批量插入n个元素或是一个迭代器的区间,如下:
insert(position, val); insert(position, n, val); insert(position, first, last);
erase()删除指定位置的元素,或是删除一个区间的元素,当删除区间时,不包括区间结束位置的元素,如下:
erase(position); erase(first, last);
it++
it--
删除元素时传入迭代器,注意删除之后该迭代器就不可用了,如果是在循环中删除,则需要下面这样的代码:
auto it = a.begin(); while(it != a.end()) { if(xxx) { // a.erase(it); // 错误,a.erase(it)之后it不可用 it = a.erase(it); } else { it++; } }
一个是只能一头进另一头出,一个是两端都可以进出,queue只支持push()和pop(),而deque比queue多支持以下方法:
push_front(); push_back(); pop_front(); pop_back();
除此外它们共享以下方法:
front(); back(); size(); empty(); clear();
注意,stack不支持清空,如果要快速清空,可将其与一个空的栈进行swap。
注意:一旦将元素插入到以上set集合后,这个元素就不可以修改了,因为一旦修改元素就破坏元素的有序性了,所以,只能先删除元素,再添加新元素。