在C++中,std::unordered_map 是一种存储键值对的数据结构,允许我们以常数平均时间复杂度来查找、插入和删除元素。
下面是一个例子,展示了如何查找特定的键,获取对应的值,以及如何遍历整个 std::unordered_map 容器。
假设一个简单的 Cpu 类,以及一个 std::unordered_map 容器 mCpus:
cpp
#include <iostream>
#include <unordered_map>
class Cpu {
public:
// 假设Cpu类有一些成员变量和方法
int cpus;
Cpu(int cpus) : cpus(cpus) {}
// 例如,一个获取投票数的方法
int getCpus() const {
return cpus;
}
};
int main() {
std::unordered_map<int, Cpu> mCpus;
// 向容器中添加元素
mCpus[1] = Cpu(10);
mCpu[2] = Cpu(20);
mCpu[3] = Cpu(30);
// 查找特定的键
int keyToFind = 2;
auto it = mCpus.find(keyToFind);
if (it != mCpus.end()) {
// 如果找到了键,则输出键和对应的值
std::cout << "Found key: " << it->first << ", value: " << it->second.getCpus() << std::endl;
} else {
std::cout << "Key not found." << std::endl;
}
// 遍历容器
for (const auto& pair : mCpus) {
// pair.first 是键,pair.second 是值
std::cout << "Key: " << pair.first << ", Value: " << pair.second.getCpus() << std::endl;
}
return 0;
}
在这个例子中,首先创建了一个 std::unordered_map<int, Cpu> 容器 mCpus,并向其中添加了几个元素。然后,使用 find 方法来查找特定的键。如果找到了该键,输出它的键和对应的值;否则,输出“Key not found.”。
接下来,使用for循环遍历整个容器,在循环中,使用 pair.first 访问键,使用 pair.second 访问值,使用 const auto& 来避免不必要的拷贝,并且确保不会修改容器中的元素。
以上,实现了查找容器的键和值,以及遍历整个容器的基本操作。