代码之家  ›  专栏  ›  技术社区  ›  Allamo Olsson

是否可以更改地图中的一对?

  •  -1
  • Allamo Olsson  · 技术社区  · 6 年前

    所以我用地图和配对测试了一些东西,然后我遇到了一个问题。

        std::map<std::string, int> pairTest;
    
    pairTest.insert(std::make_pair("Peter", 100));
    
    for (std::map<std::string, int>::iterator it = pairTest.begin(); it != pairTest.end(); it++) {
        std::cout << it->first << ":" << it->second << std::endl;
    }
    

    我怎样才能把“彼得”改成“丹尼尔”? 我能做到吗?

    如何使配对永远不可更改并添加具有不同值的相同密钥?

    我尝试过另一种方法,这是一种更正确的方法吗?

        std::map<std::string, int> pairTest;
    
    pairTest.insert(std::pair<std::string, int>("Peter", 100));
    
    for (std::map<std::string, int>::iterator it = pairTest.begin(); it != pairTest.end(); it++) {
        std::cout << it->first << ":" << it->second << std::endl;
    }
    
    1 回复  |  直到 6 年前
        1
  •  6
  •   R Sahu    6 年前

    我的问题是,我怎样才能把“彼得”改成“丹尼尔”?

    你不能。你最好的选择是去掉“彼得”,然后加上“丹尼尔”。

    你不能改变的原因 first pair ,这是 key 从概念的角度来看,它应该是一个常量。标准库通过定义 std::map<K, V>::value_type 成为 std::pair<const K, V> . 如果您能够更改 第一 ,您将破坏地图中项目的排序顺序。