在unordered_map上查找值

时间:2018-06-17 16:27:39

标签: c++ unordered-map

所以在开始时我有一个unordered_map,其中一个int作为键,字符串作为用256个ASCII字符初始化的值,但后来我发现自己需要在dictionnary中搜索一个字符串,但我不能使用map ::发现因为我的密钥是一个int。 所以这是我的问题如何在无序地图中搜索特定值?或者我应该如何修改此方法来初始化unordered_map中的所有ASCII字符,其中键是一个字符串,我可以使用map :: find?

void InitDico (unordered_map<int,string>& Dico){
   Dico.clear();
   for (int i = 0; i < 256; ++i)
   {
       Dico[i] = (char)i;
   }}

我尝试了什么:

void InitDico (unordered_map<string,int>& Dico){
   Dico.clear();
   for (int i = 0; i < 256; ++i)
   {
       Dico.insert({(char)i , i});  
   }}

2 个答案:

答案 0 :(得分:1)

std::string有一个构造函数,它接受一个计数和一个char,并构造一个char的计数重复字符串。

It is implementation-defined whether a char object can hold negative values.

void InitDico2(std::unordered_map<std::string,int>& Dico) {
    Dico.clear();
    for (unsigned char c = 0; c < 256; c++)
    {
        Dico[{1, c}] = c;
    }    
}

答案 1 :(得分:0)

所以坦克超级我做到了,我做了一个非常愚蠢的错误....所以这里是代码:

void InitDico2(unordered_map<string,int>& Dico) {
Dico.clear();
string s ="";
char c;
for (int i = 0; i < 256; i++)
{
    c = (char)i;
    s += c;
    Dico[s] = i;
    s.clear();

}}