在开始讲迭代器之前,先列举几个例子,由浅入深的来理解一下为什么要设计迭代器. //对于int类的求和函数 int sum(int *a , int n) { int sum = 0 ; for (int i = 0 ; i < n ; i++) { sum += *a++; } return sum; } //对于listNode类的求和函数 struct ListNode { int val; ListNode * next; }; int sum(ListNode * head) { int
容器支持的迭代器类型 STL Container Type of Iterators Supported vector random access iterators 元素严格有序(类似数组) deque random access iterators list bidirectional iterators 仅能通过某个 元素找到其直 接前驱和直接 后继(类似链 表) set bidirectional iterators multiset bidirectional iter
my_container.erase(iter); 其中my_container是STL的某种容器,iter是指向这个容器中某个元素的迭代器.如果不是在for,while循环中,这种方式删除元素没有问题,如果是在for,while中对m_container迭代,删除其中符合条件的所有元素,就可能出现问题.如果是在for,while中对m_container迭代,删除其中符合条件的所有元素,就可能出现问题. 问题是: 在迭代容器的时候删除元素,可能导致迭代器失效(invalidation of i
前不久把STL细看了一遍,由于看得太"认真",忘了做笔记,归纳和总结这步漏掉了.于是为了加深印象,打算重看一遍,并记录下来里面的一些实现细节.方便以后能较好的复习它. 以前在项目中运用STL一般都不会涉及到空间配置器,可是,在STL的实现中,空间配置器是重中之重,因为整个STL的操作对象都存放在容器之内,而容器一定需要配置空间以置放资料.所以,在阅读STL源码时,最先需要掌握的就是空间配置器,没了它,容器,算法怎么存在? C++ STL的空间配置器将内存的配置.释放和对象的构造和析构分