- 论坛徽章:
- 0
|
说明:data.erase(it++); 语句执行后,it可以指向被删除元素之后的元素。
问题:
1)data.erase(it++); 这个语句执行的原理是什么?
2) 为什么data.erase(it++); 这个语句 和 {data.erase(it); it++}执行效果不同?- int main() {
- map<int, int> data;
- data.insert(make_pair(1,1));
- data.insert(make_pair(2,2));
- data.insert(make_pair(3,2));
- data.insert(make_pair(4,3));
- for (map<int, int>::iterator it = data.begin();
- it != data.end();) {
- if (it->second == 2) {
- cout << it->first << ": " << it->second << endl;
- data.erase(it++);
- } else {
- ++it;
- }
- }
- cout << "final:"<< endl;
- for (map<int, int>::iterator it = data.begin();
- it != data.end(); ++it) {
- cout << it->first << ": " << it->second << endl;
- }
- return 0;
- }
复制代码 |
|