繁体   English   中英

C ++ MapType :: iterator使用更新后的值

[英]C++ MapType::iterator using updated value

在我的C ++代码中,我通过迭代器访问地图。 如有必要,请更新地图,然后将其重新分配给class变量。 在继续进行的语句中,我想再次使用更新的地图值。 我是否应该再次加载地图,刷新迭代器? 等等。例如,地图是:

MapType tbl = device->trust();
MapType::iterator iter_trust = tbl.begin();
tbl.insert(std::pair<int, double> (node->getId().id(), 0.1));

对更新后的值执行以下操作,我该怎么办?

iter_trust = tbl.find(node->getId().id());
MapType tbl = device->trust();
MapType::iterator iter_trust = tbl.find(node->getId().id());

if (iter_trust == tbl.end()) {
   tbl.insert(std::make_pair(node->getId().id(), 0.1));
   iter_trust = tbl.find(node->getId().id());
}
else {
   tbl[node->getId().id()] = 0.1;
}

因此,您可以确定要升级。

std::map::insert将迭代器返回到新插入的元素。 如果您的MapTypestd::map typedef,则可以执行

std::pair<MapType::iterator, bool> result = tbl.insert(std::make_pair(node->getId().id(), 0.1));
MapType::iterator iter_trust = result.first;

继续。

顺便说一句,请注意std::make_pair的使用,这通常比直接使用pair构造函数简单。

另外,请注意map::insert返回一迭代器和一个布尔值。 迭代器为您提供了插入对象的位置,布尔值指示插入是否成功(即该键先前在映射中不存在)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM