关键字在C++字典中不断被替换

Key keeps getting replaced in dictionary C++

本文关键字:替换 C++ 字典 关键字      更新时间:2023-10-16

我正试图在C++中创建一个字典类型的类来取乐,类似于Python中的类,在Python中可以指定键和值(在这种情况下可以是任何类型,包括自定义类)。

for (unsigned int x = 0; x < word.length(); x++) {
    if (!map.has_key(word[x])) {
        std::cout << "CREATING " << word[x] << std::endl;
        map[word[x]] = ics::ArraySet<char>();
        map[word[x]].insert(word[x]);
    }
    for (int y = 0; y < dist; y++) {
        std::cout << "HELLO!" << std::endl;
        if ((x + y) < word.length())
            std::cout << "ADDING " << word[x+y] << std::endl;
            map[word[x]].insert(word[(x + y)]);
        if ((x - y) >= 0)
            map[word[x]].insert(word[(x - y)]);
    }
}

出现的问题是我的钥匙一直被替换。我试图找到当前字母"x"范围内的字母。我将这些附近的键附加到一个集合中,这是我的字典在这种情况下的值。

例如:附近(赛车,2)

应该返回一个值如下的字典。。。

字典('r'->{r,a,c},'a'->{r,c,e},…)

然而,

if (!map.has_key(word[x]))

不断地失败,我的钥匙每次都会随着布景一起被重新创建。

您认为缩进意味着不存在的代码结构的典型错误

    if ((x + y) < word.length())
        std::cout << "ADDING " << word[x+y] << std::endl;
        map[word[x]].insert(word[(x + y)]);

但是,语句map[word[x]].insert(word[(x + y)]);不受if的影响。

在此处的两个语句周围添加大括号{}