简述C++ map 插入方式有几种 ?
参考答案:
在C++中,std::map
是一种关联容器,它存储的元素都是键值对(key-value pairs)。std::map
提供了多种插入元素的方式,以下是主要的几种:
-
使用
insert
成员函数:std::map
的insert
成员函数可以用来插入单个元素或者一个元素范围。- 插入单个元素:
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());`
-
使用
emplace
成员函数:emplace
函数类似于insert
,但是它会在容器内直接构造元素,而不是先构造一个元素然后再复制或移动到容器中。这通常比insert
更高效,因为它避免了不必要的复制或移动操作。
myMap.emplace(1, "one");
- 使用下标运算符(
[]
):下标运算符可以用来访问或插入元素。如果元素已存在,它将返回该元素的引用;如果元素不存在,它会在容器中插入一个新元素,并返回该新元素的引用。
myMap[1] = "one";
需要注意的是,使用下标运算符插入元素时,如果键已存在,则会覆盖原有的值。而insert
和emplace
则不会覆盖已存在的元素。
- 使用
try_emplace
成员函数:这是C++17中引入的一个新函数,它尝试直接在容器中构造并插入一个元素,但如果键已存在,则不执行任何操作。
myMap.try_emplace(1, "one");
以上就是C++中std::map
的主要插入方式。选择哪种方式取决于你的具体需求和场景。