unordered_map构造方法

本文详细介绍了C++中`std::unordered_map`的各种构造函数,包括默认构造、拷贝构造、移动构造、范围构造以及使用初始化列表和分配器的构造,帮助读者理解如何高效地创建和初始化无序映射。
摘要由CSDN通过智能技术生成
默认构造函数:
std::unordered_map<Key, T> myMap;
这将创建一个空的无序映射。

拷贝构造函数:
std::unordered_map<Key, T> anotherMap(myMap);
这将创建一个新的无序映射,其内容与 myMap 相同。

移动构造函数:
std::unordered_map<Key, T> movedMap(std::move(anotherMap));
这将创建一个新的无序映射,并从 anotherMap 中移动其内容。

范围构造函数:
std::unordered_map<Key, T> rangeMap(myVector.begin(), myVector.end());
这将使用迭代器范围 [begin, end) 中的元素来初始化无序映射。

使用初始化列表构造:
std::unordered_map<Key, T> initMap {
    {key1, value1},
    {key2, value2},
    // 更多的键值对
};
这将使用初始化列表中的键值对来初始化无序映射。

使用分配器构造:
std::unordered_map<Key, T, Hash, KeyEqual, Allocator> allocMap;
这将使用自定义的分配器 Allocator 来创建无序映射。
unordered_mapC++ STL中的一个关联容器(Associative Container),使用哈希表(Hash Table)实现,可以用于存储键值对(key-value pairs)。以下是unordered_map的常用方法: 1. 插入元素 unordered_map可以使用insert()方法插入元素,也可以使用[]运算符插入元素。例如: ```c++ // 使用insert()方法插入元素 unordered_map<int, string> myMap; myMap.insert({1, "apple"}); myMap.insert(make_pair(2, "banana")); // 使用[]运算符插入元素 myMap[3] = "orange"; myMap[4] = "peach"; ``` 2. 访问元素 unordered_map可以使用[]运算符访问元素,也可以使用at()方法访问元素。如果访问不存在的键,则[]运算符会将其插入元素,并且值默认为默认构造函数的值。例如: ```c++ // 使用[]运算符访问元素 string fruit1 = myMap[1]; string fruit2 = myMap[2]; // 使用at()方法访问元素 string fruit3 = myMap.at(3); string fruit4 = myMap.at(4); // 访问不存在的键 string fruit5 = myMap[5]; // 默认值为"" myMap.at(6); // 抛出std::out_of_range异常 ``` 3. 删除元素 unordered_map可以使用erase()方法删除元素,也可以使用clear()方法删除所有元素。例如: ```c++ // 删除元素 myMap.erase(1); myMap.erase(2); myMap.erase(3); // 删除所有元素 myMap.clear(); ``` 4. 查找元素 unordered_map可以使用find()方法查找元素,如果找到则返回指向该元素的迭代器,否则返回end()迭代器。例如: ```c++ // 查找元素 auto it = myMap.find(1); if (it != myMap.end()) { cout << "Found the fruit: " << it->second << endl; } else { cout << "The fruit is not found." << endl; } ``` 5. 遍历元素 unordered_map可以使用迭代器遍历所有元素。例如: ```c++ // 遍历元素 for (auto it = myMap.begin(); it != myMap.end(); ++it) { cout << "Key: " << it->first << ", Value: " << it->second << endl; } ``` 以上是unordered_map的常用方法,使用时需要包含头文件<unordered_map>。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值