在地图C++中使用List

use*_*316 11 c++

我可以使用以下语法:

 std::map<int,std::list<int>> mAllData;
Run Code Online (Sandbox Code Playgroud)

其中Key Value(int)将是数据的ID,并且所述数据可以具有多种类型,因此将所有数据存储在所述密钥值中.我正在尝试使用它.

bam*_*s53 28

std::map<int,std::list<int>> my_map;
my_map[10].push_back(10000);
my_map[10].push_back(20000);
my_map[10].push_back(40000);
Run Code Online (Sandbox Code Playgroud)

您的编译器可能不支持两个右侧的尖括号彼此相邻,因此您可能需要std::map<int,std::list<int> > my_map.

使用C++ 11 my_map可以更有效地初始化:

std::map<int,std::list<int>> my_map {{10, {10000,20000,40000}}};
Run Code Online (Sandbox Code Playgroud)

此外,如果您只想要一种方法来存储每个键的多个值,则可以使用std :: multimap.

std::multimap<int,int> my_map;
my_map.insert(std::make_pair(10,10000));
my_map.insert(std::make_pair(10,20000));
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,这可以写成:

std::multimap<int,int> my_map {{10,10000},{10,20000}};
Run Code Online (Sandbox Code Playgroud)

  • 我不敢相信我不知道`std :: multimap`(我知道它,从来没用过它)!我通常使用`std :: map <K,std :: vector <V >>`.真棒......现在我觉得自己是一个没有经验的爱好者. (4认同)