我想將值添加到採用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