我正在尝试在C ++中创建一个类的字典类型,类似于在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' - &gt; {r,a,c},'a' - &gt; {r,c,e},...)
然而,发生的是
if (!map.has_key(word[x]))
一直失败,我的钥匙每次都与套装一起重新创建。
答案 0 :(得分:1)
你认为你的缩进意味着代码结构不存在的经典错误
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
。
在这两个语句周围添加花括号{}
。