所以我有一個map myMap,我試圖靜態初始化(必須這樣做)。C++靜態初始化map <float,float [3]>
我做了以下內容:
myMap =
{
{415, {1, 52356, 2}},
{256, {356, 23, 6}},
//...etc
};
不過,我發現了以下錯誤:「數組初始化函數必須是一個初始化列表。」
上面的語法有什麼問題?
所以我有一個map myMap,我試圖靜態初始化(必須這樣做)。C++靜態初始化map <float,float [3]>
我做了以下內容:
myMap =
{
{415, {1, 52356, 2}},
{256, {356, 23, 6}},
//...etc
};
不過,我發現了以下錯誤:「數組初始化函數必須是一個初始化列表。」
上面的語法有什麼問題?
您應該使用array<float, 3>
而不是 「普通」 arrray:
#include <map>
#include <array>
#include <iostream>
int main()
{
std::map<float, std::array<float, 3>> myMap
{
{415, std::array<float, 3>{1, 52356, 2}},
{256, std::array<float, 3>{356, 23, 6}}
//...etc
};
/* OR
std::map<float, std::array<float, 3>> myMap
{
{415, {{1, 52356, 2}}},
{256, {{356, 23, 6}}}
//...etc
};
*/
std::cout << myMap[415][0] << " " << myMap[256][1] << " " << std::endl;
return 0;
}
是的,這是最終爲我修復它。謝謝 – user1855952
我懷疑你正試圖使用Visual Studio 2012或更早版本。直到Visual Studio 2013才支持std :: map上的初始化列表。
選中此項。 http://stackoverflow.com/questions/2172053/c-can-i-statically-initialize-a-stdmap-at-compile-time –
我檢查了一下,我不認爲我有同樣的問題因爲我試圖靜態初始化map而不是map 的映射工作得很好。我只得到這個問題,當值是一個數組 –
user1855952
請檢查這個http://stackoverflow.com/questions/138600/initializing-a-static-stdmapint-int-in-c – vinod