我的理解是关联容器的迭代器在插入或擦除期间不会失效(除非迭代器指向的节点被擦除).但是在下面的程序中插入似乎使迭代器无效.是不是我的理解错了?
typedef std::set<unsigned int> myset_t; int main(int argc,char **argv) { myset_t rs; myset_t::reverse_iterator rit; myset_t::reverse_iterator srit; int ii = 500; rs.insert(10); rs.insert(11); rs.insert(12); rs.insert(13); rs.insert(14); rs.insert(100000); rs.insert(102000); rs.insert(103000); rit = rs.rbegin(); while(rit != rs.rend()) { srit = rit; if (*rit < 100000) { cout << "bailing here " << *rit << endl; return 0; } rit++; cout << "Before erase " << *rit << endl; rs.erase(*srit); cout << "Before insert " << *rit << endl; rs.insert(ii); cout << "After insert " << *rit << endl; ii++; } cout << "Out of loop" << endl; } === The output is Before erase 102000 Before insert 102000 After insert 14 bailing here 14 =====