unordered_map 中括号
时间: 2023-11-11 11:06:41 浏览: 84
在C++的unordered_map中,中括号[]用于访问和修改哈希表中的元素。使用中括号时,如果键存在,则返回对应的值;如果键不存在,则会自动插入该键,并将值初始化为默认值。下面是一个使用中括号访问和修改unordered_map的例子:
```c++
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// 访问元素
std::cout << "The value of myMap[\"apple\"] is " << myMap["apple"] << std::endl;
// 修改元素
myMap["apple"] = 4;
std::cout << "The value of myMap[\"apple\"] is " << myMap["apple"] << std::endl;
return 0;
}
```
输出结果为:
```
The value of myMap["apple"] is 1
The value of myMap["apple"] is 4
```
相关问题
std::unordered_map<std::string, std::unordered_map<std::string, std::vector<double>>> Data初始化
这是一个关于C++语言中unordered_map的初始化的问题,可以回答。在C++中,unordered_map是一种关联容器,可以使用花括号初始化列表来初始化。对于这个问题,可以使用以下代码进行初始化:
std::unordered_map<std::string, std::unordered_map<std::string, std::vector<double>>> Data = {
{"key1", {{"subkey1", {1.0, 2.0, 3.0}}, {"subkey2", {4.0, 5.0, 6.0}}}},
{"key2", {{"subkey3", {7.0, 8.0, 9.0}}, {"subkey4", {10.0, 11.0, 12.0}}}}
};
这样就可以初始化一个嵌套的unordered_map,其中包含两个键值对,每个键值对都包含两个子键值对,每个子键值对都包含一个double类型的向量。
unordered_map 插入
unordered_map是C++ STL中的一个关联容器,其底层使用哈希表实现。unordered_map中的元素是无序的,但是可以通过键值来访问对应的值。
unordered_map中插入元素的方法为:使用insert()函数或者[]运算符。
使用insert()函数插入元素的方法为:
unorderd_map<int,string> map;
map.insert({1,"apple"});
map.insert(pair<int,string>(2,"banana"));
map.insert(make_pair(3,"orange"));
其中,{}中的内容表示一个pair对象,pair对象有两个成员,first和second。使用pair<int,string>时,first表示键值,second表示对应的值。make_pair()函数可以自动生成一个pair对象。
使用[]运算符插入元素的方法为:
unordered_map<int,string> map;
map[1] = "apple";
map[2] = "banana";
map[3] = "orange";
这种方法使用起来更加方便,直接通过中括号加键值来访问或者修改对应的值。如果键值不存在,会自动创建对应的键值对,并对应一个默认构造函数的值。
总之,unordered_map中的插入方法较为简单,可以根据具体情况选择使用insert()函数或者[]运算符,其中使用[]运算符可以更加简洁明了。
阅读全文