gpt4 book ai didi

c++ - 实例化 std::map<> 的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 00:36:34 25 4
gpt4 key购买 nike

Class Base {
public:
std::map<std::string, std::string> animals;
};

以下哪项是实例化 std::map<> 的正确方法?

Derived::Derived() {
animals["Rabbit"] = "Killer Rabbit";
//or
animals.insert( std::pair<std::string,std::string>("Rabbit","Killer Rabbit") );
}

最佳答案

在一个函数中,你应该这样做:

animals["Rabbit"] = "Killer Rabbit";

或者这个:

animals.insert(std::make_pair("Rabbit", "Killer Rabbit"));

在C++11中,上面的后一种形式可以缩短为:

animals.insert({"Rabbit", "Killer Rabbit"});

C++11 还提供了另一种可能性,即就地构造对:

m.emplace("test1", "t2");

作为shakurov在评论中正确提及,第一种形式和其余形式之间的主要区别在于第一种形式将覆盖与 "Rabbit" 键关联的值(如果已经存在),而其他形式不会的。

此外,正如 Dave S 指出的那样- 再次在评论中 - 第一种形式默认构造值然后分配它,其他三种形式不是这种情况。

关于c++ - 实例化 std::map<> 的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15744943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com