// set_iterator.cpp : defines the entry point for the console application.#include "stdafx.h"#include <iostream>#include <set>using namespace std;int _tmain(int argc,_TCHAR* argv[]){ set<int> a1; set<int> a2; a1.insert(3); a1.insert(4); a1.insert(5); a2.insert(1); a2.insert(2); a2.insert(6); set<int>::iterator iter; int x = 0; for (iter = a1.begin(); iter != a1.end(); ++iter) { if (x == 0) { x = 1; a1.insert(a2.begin(),a2.end()); } cout << *iter << endl; } system("pause"); return 0;}
目标是访问集合中的每个元素一次.我认为在将元素插入a1后,迭代器无效.
输出是
3 4 5 6
1,2不打印.
我们如何编码这样的情况.
解决方法 实际上,迭代器仍然有效.集合是基于节点的容器.问题是在一个集合中,元素总是被排序.在插入之前,您的设置如下所示:
3 4 5^iter
插入后,您的设置如下所示:
1 2 3 4 5 6 ^ iter
如果您希望能够做您正在做的事情,您将不得不使用不同的容器.
总结以上是内存溢出为你收集整理的c – 在插入新元素时,我们如何迭代集合的所有元素?全部内容,希望文章能够帮你解决c – 在插入新元素时,我们如何迭代集合的所有元素?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)