我正在尝试将值添加到采用int键和char值的map变量中。地图将包含字母表中字母的位置以及该位置的相应字母。出于某种原因,我从for循环中的.insert()
部分收到错误。
map<int, char> cipher;
for (int i = 0; i < 26; i++)
{
cipher.insert(i, char(97 + i));
}
答案 0 :(得分:1)
使用地图时,这是正确的语法:
for (int i = 0; i < 26; i++)
{
cipher[i] = char(97 + i);
}
//To use it
std::cout << cipher[letterindex] << std::endl;
答案 1 :(得分:1)
我会做的略有不同:
我将使用map::emplace
代替它,因为它将一个新元素插入到容器中,该容器是使用给定的args(如果它还没有)就地构造的,并且如果可能的话,避免不必要的复制或移动操作。
for (int i = 0; i < 26; i++)
{
cipher.emplace(i, char(97 + i));
}
试试吧 - &gt; https://ideone.com/pKf99l
答案 2 :(得分:0)
您应该使用std::make_pair
:
for (int i = 0; i < 26; i++)
{
cipher.insert(std::make_pair(i, char(97 + i)));
}
此处有更多详情:
http://en.cppreference.com/w/cpp/container/map/insert http://en.cppreference.com/w/cpp/utility/pair/make_pair
问题是insert
函数没有重载需要单独的键/值参数。