我想将值添加到采用int键和char值的映射变量中。该地图将包含字母表中字母的位置以及该位置上的相应字母。出于某种原因,我在for循环中从.insert()
部分收到错误。使用for循环创建映射
map<int, char> cipher;
for (int i = 0; i < 26; i++)
{
cipher.insert(i, char(97 + i));
}
我想将值添加到采用int键和char值的映射变量中。该地图将包含字母表中字母的位置以及该位置上的相应字母。出于某种原因,我在for循环中从.insert()
部分收到错误。使用for循环创建映射
map<int, char> cipher;
for (int i = 0; i < 26; i++)
{
cipher.insert(i, char(97 + i));
}
下面是正确的语法使用地图时:
for (int i = 0; i < 26; i++)
{
cipher[i] = char(97 + i);
}
//To use it
std::cout << cipher[letterindex] << std::endl;
你应该使用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
函数。
我会做略有不同:
我会用map::emplace
,而不是因为它插入一个新元素到容器中,就地建造与给定ARGS(如果它尚不存在),并避免不必要的副本或尽可能移动操作。
for (int i = 0; i < 26; i++)
{
cipher.emplace(i, char(97 + i));
}
你也应该阅读下面的答案 – Treycos