用于循环构建映射

时间:2016-10-06 20:42:42

标签: c++ loops dictionary

我正在尝试将值添加到采用int键和char值的map变量中。地图将包含字母表中字母的位置以及该位置的相应字母。出于某种原因,我从for循环中的.insert()部分收到错误。

map<int, char> cipher;

for (int i = 0; i < 26; i++)
{
    cipher.insert(i, char(97 + i));
}

3 个答案:

答案 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

http://en.cppreference.com/w/cpp/container/map/emplace

答案 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函数没有重载需要单独的键/值参数。