unordered_map插入新元素
时间: 2023-08-26 13:17:45 浏览: 121
C++11 unordered_map与map(插入,遍历,Find)效率对比。
要向`unordered_map`中插入新元素,你可以使用`insert`函数或使用`operator[]`运算符。
下面是使用`insert`函数插入新元素的示例:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> map;
// 使用insert函数插入新元素
map.insert(std::make_pair("apple", 10));
map.insert(std::make_pair("banana",5));
map.insert(std::make_pair("orange", 3));
// 使用insert函数插入新元素(C++11之后的初始化语法)
map.insert({"kiwi", 7});
// 使用insert函数插入新元素(C++17之后的结构化绑定语法)
auto [it, inserted] = map.insert({"pear", 8});
if (inserted) {
std::cout << "Successfully inserted: " << it->first << std::endl;
} else {
std::cout << "Failed to insert: " << it->first << std::endl;
}
return 0;
}
```
在上面的示例中,我们使用`insert`函数向`unordered_map`中插入了几个新的键值对。注意,使用`make_pair`函数可以方便地创建键值对。在C++11之后,你还可以使用初始化语法或结构化绑定语法来插入新元素。
另一种插入新元素的方法是使用`operator[]`运算符。当你使用`operator[]`访问一个键时,如果该键不存在,将会自动创建一个新元素并返回对应的值。下面是使用`operator[]`插入新元素的示例:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> map;
// 使用operator[]插入新元素
map["apple"] = 10;
map["banana"] = 5;
map["orange"] = 3;
// 使用operator[]插入新元素(C++11之后的初始化语法)
map["kiwi"] = 7;
// 使用operator[]插入新元素(C++17之后的结构化绑定语法)
auto [it, inserted] = map.emplace("pear", 8);
if (inserted) {
std::cout << "Successfully inserted: " << it->first << std::endl;
} else {
std::cout << "Failed to insert: " << it->first << std::endl;
}
return 0;
}
```
在上面的示例中,我们使用`operator[]`运算符插入了几个新的键值对。如果键已经存在,则会更新对应的值;如果键不存在,则会创建一个新元素。
无论是使用`insert`函数还是`operator[]`运算符,都可以用于向`unordered_map`中插入新元素。选择使用哪种方法取决于你的需求和编码习惯。
阅读全文