首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入到STL映射结构元素中

插入到STL映射结构元素中
EN

Stack Overflow用户
提问于 2013-09-27 23:37:46
回答 2查看 1.5K关注 0票数 0

如果我有一个结构,

代码语言:javascript
复制
struct temp
{
  int var1, var2, var3, var4, var5;
}

和如下所示的STL映射:

代码语言:javascript
复制
map < int, temp >  mymap;

现在,我只想更新var2的值,是否可以使用STL插入函数来实现?有人能带我到这里来吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-09-27 23:40:19

Insert是用于插入的。如果你只是想要更新,那么你必须先find你想要更新的结构。例如。

代码语言:javascript
复制
map < int, temp >::iterator i = mymap.find(88); // find entry with key 88
if (i != mymap.end() // did we find it?
    i->var = 99; // update vars2
票数 1
EN

Stack Overflow用户

发布于 2013-09-27 23:40:46

std::map::insert documentation介绍

插入操作检查每个插入的元素是否具有与容器中已有元素的键等效的键,如果有,则不插入该元素,并将迭代器返回到该现有元素

因此,您可以使用insert来检索已存在项的迭代器。

由于还提到了其他选项,包括find和索引运算符,我想这应该是总结,您可以根据需要进行选择:

代码语言:javascript
复制
#include <map>
#include <cstdlib>
#include <iostream>

struct Dummy
{
    int nDummyValue;
};

int main(int argc, char** argv)
{
    std::map<int, Dummy> Map;
    Dummy DummyInstance = { 1 };
    std::pair<std::map<int, Dummy>::iterator, bool> InsertionResult = Map.insert(std::pair<int, Dummy>(1, DummyInstance)); // Inserts {1, {1}}
    InsertionResult.first->second.nDummyValue = 2; // Sets {1, {1} to {1, {2}}
    DummyInstance.nDummyValue = 5;
    Map[5] = DummyInstance; // Adds {5, {5}}
    std::map<int, Dummy>::iterator MapIterator;
    MapIterator = Map.find(4); 
    if(MapIterator != Map.end())
        MapIterator->second.nDummyValue = 4; // Is not run because there is no element with key 5
    MapIterator = Map.find(5);
    if(MapIterator != Map.end())
        MapIterator->second.nDummyValue = 10; // Changes {5, {5}} to {5, {10}}
    for(std::map<int, Dummy>::iterator Iterator = Map.begin(); Iterator != Map.end(); ++Iterator)
        std::cout << Iterator->first << " : " << Iterator->second.nDummyValue << std::endl;
    return EXIT_SUCCESS;    
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19054770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档