标签:style blog strong 数据 2014 问题 log amp sp
1、STL为什么要用迭代器迭代器实现示例。
struct Iter { Item* ptr; Iter(Item* p=0) :ptr(p) {} Item& operator*() const{return *ptr;} Item* operator->() const{return ptr;} Iter& operator++(){ptr=ptr->next(); return *this;} Iter operator++(int){Iter tmp=*this; ++*this; return tmp;} bool operator==(const Iter& i) const {return ptr==i.ptr;} bool operator!=(const Iter& i) const {return ptr!=i.ptr;} };
3、迭代器什么操作下会崩溃
当迭代器失效时,继续操作会出现崩溃。
失效有两种情况。
? 由于容器元素整体迁移导致原容器空间不再有效,从而使得指向原空间的迭代器失效。
? 由于删除元素使得某些元素次序发生变化使得原本指向某元素的迭代器不再指向希望指向的元素。
几种类型迭代器失效情况。
vector迭代器失效。
? push_back元素后,end操作返回的迭代器失效。
? erase、pop_back都会引起指向删除点的迭代器失效。
? insert后容器空间重新分配时,指向原数据的迭代器失效。
list迭代器:当删除时(erase),指向被删除点的迭代器会失效。
标签:style blog strong 数据 2014 问题 log amp sp
原文地址:http://blog.csdn.net/segen_jaa/article/details/38823705