跳到主要内容

简述C++ map 插入方式有几种 ?

参考答案:

在C++中,std::map是一种关联容器,它存储的元素都是键值对(key-value pairs)。std::map提供了多种插入元素的方式,以下是主要的几种:

  1. 使用insert成员函数std::mapinsert成员函数可以用来插入单个元素或者一个元素范围。

    • 插入单个元素:
    	cpp`std::map<int, std::string> myMap;
    	myMap.insert(std::pair<int, std::string>(1, "one"));`
    

    或者使用make_pair

    	cpp`myMap.insert(std::make_pair(1, "one"));`
    

    或者使用C++11之后的初始化列表:

    	cpp`myMap.insert({1, "one"});`
    
    • 插入一个元素范围:
    	cpp`std::map<int, std::string> anotherMap = {{2, "two"}, {3, "three"}};
    	myMap.insert(anotherMap.begin(), anotherMap.end());`
    
  2. 使用emplace成员函数emplace函数类似于insert,但是它会在容器内直接构造元素,而不是先构造一个元素然后再复制或移动到容器中。这通常比insert更高效,因为它避免了不必要的复制或移动操作。

myMap.emplace(1, "one");
  1. 使用下标运算符([]:下标运算符可以用来访问或插入元素。如果元素已存在,它将返回该元素的引用;如果元素不存在,它会在容器中插入一个新元素,并返回该新元素的引用。
myMap[1] = "one";

需要注意的是,使用下标运算符插入元素时,如果键已存在,则会覆盖原有的值。而insertemplace则不会覆盖已存在的元素。

  1. 使用try_emplace成员函数:这是C++17中引入的一个新函数,它尝试直接在容器中构造并插入一个元素,但如果键已存在,则不执行任何操作。
myMap.try_emplace(1, "one");

以上就是C++中std::map的主要插入方式。选择哪种方式取决于你的具体需求和场景。