gpt4 book ai didi

c++ - 在读/写中使用 C++11 unordered_map 的最有效方法

转载 作者:行者123 更新时间:2023-11-28 00:46:26 25 4
gpt4 key购买 nike

在我的程序的一部分中,我想更新 unordered_map 的给定值。问题可以这样简化:

#include <iostream>
#include <stdlib.h>
#include <unordered_map>
#include <string>
int main(int argc, char **argv) {
std::unordered_map <unsigned long, int> map;
unsigned long i = 1;
std::string s;
while (i != 0) {
std::cout << "Give me an unsigned long" << std::endl;
std::cin >> s;
i = strtoul(s.c_str(), NULL, 0);
if (map.find(i) == map.end()) map[i] = 1;
else if (map[i] < static_cast<unsigned long>(-1)) map[i] += 1;
}
}

(当然,我的程序不存储用户输入数据,这只是为了说明目的。我的程序实际上存储整数编码的字符串在 4 个字母的字母表上。我需要散列,而不是树,这样做。 )

如您所见,我需要检查 key 是否存在并更新它。由于我存储了超过 10 亿个整数,我想知道最有效的方法。

我看到了this related question , 但它没有提到值(value)更新。

非常感谢大家。

最佳答案

int &value = map[key];
if (value != static_cast<unsigned long>(-1)) ++value;

如果 key 不在映射中,value 将被值初始化为 0,因此将取 的正确值code>1 递增后。

关于c++ - 在读/写中使用 C++11 unordered_map 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com