c – 在插入新元素时,我们如何迭代集合的所有元素?
发布时间:2020-12-16 04:58:33 所属栏目:百科 来源:网络整理
导读:考虑一下: // set_iterator.cpp : Defines the entry point for the console application.#include "stdafx.h"#include iostream#include setusing namespace std;int _tmain(int argc,_TCHAR* argv[]){ setint a1; setint a2; a1.insert(3); a1.insert(4);
考虑一下:
// 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后,迭代器无效. 输出是 1,2不打印. 我们如何编码这样的情况. 解决方法
实际上,迭代器仍然有效.集合是基于节点的容器.
问题是在一个集合中,元素总是被排序.在插入之前,您的设置如下所示: 3 4 5 ^ iter 插入后,您的设置如下所示: 1 2 3 4 5 6 ^ iter 如果您希望能够做您正在做的事情,您将不得不使用不同的容器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |