加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在循环范围中填充c映射内容

发布时间:2020-12-16 10:17:47 所属栏目:百科 来源:网络整理
导读:我尝试在循环范围内填充c映射的内容. #include set#include mapmapint,setint maps;for (int i=0; i10; i++) { setint seti; // content: a set of integers seti.insert(i); seti.insert(...); maps.insert ( pairint,setint (i,seti) );} 问题是: maps.in
我尝试在循环范围内填充c映射的内容.

#include <set>
#include <map>

map<int,set<int> > maps;

for (int i=0; i<10; i++) {
   set<int> seti;    // content: a set of integers
   seti.insert(i);
   seti.insert(...);
   maps.insert ( pair<int,set<int> >(i,seti) );
}

问题是:
maps.insert会复制这对内容吗?
如果在每个循环范围之后对实例无效,则此类代码应该失败.

我应该如何正确生成地图内容(使用指针和新实例?)以及如何正确地清理地图?

感谢您对最佳实践的任何建议.

—更新—

map<int,set<int> >::iterator it;
int k      = (*it).first;     
set<int> v = (*it).second;

现在’v’也是从地图中存储的真实实例复制的一个?
如果是的话,我无法“直接”更新地图内容.

解决方法

您不必显式创建set对象,因为当您使用[]运算符访问它时,它将在地图中创建.因此,你可以简单地写

#include <set>
#include <map>

map<int,set<int> > maps;

for (int i=0; i<10; i++) {
   maps[i].insert(i);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读