c – 在插入新元素时,我们如何迭代集合的所有元素?

c – 在插入新元素时,我们如何迭代集合的所有元素?,第1张

概述考虑一下: // 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_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 – 在插入新元素时,我们如何迭代集合的所有元素?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1243609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存