繁体   English   中英

如何在 C++ 中映射多个值?

[英]how to map multiple values in c++?

当前代码

std::map<std::string,int> m;
...
m.insert(std::pair<std::string,int>(text,lineno));
...
std::cout<<"key: "<<iter->first<<"lineno: "<<iter->second<<std::endl;

如何在同一个键中保存多个值?

std::map<std::string,int> m;

通过声明 this (the above),您已经实例化了 map,其中string类型的map (m) 的键和值的类型为int

C++你可以声明一个带有键和值对的map ,来自任何类型,你喜欢/需要什么,所以答案是, vector取决于你想从这个Data Structure实现什么。

这是带有矢量的 ilustration:

std::map<std::string,std::vector<int>> my_map; 

这是带有类型映射值的说明:

std::map<std::string, std::map<std::string, int>> my_map; 

笔记

如果您使用的是c++版本或低于c++11标准编译器,则需要在相邻的右尖括号之间添加空格,如下所示:

std::map<std::string, std::map<std::string, int> > my_map; 

总结其他人的评论,这里是一个答案。

假设您有某种类型T并且想要将std::string映射到该类型的多个值。 当您不知道需要映射到多少个多个值时,最简单的方法是使用std::vector <T> 如果您确实知道要为每个键处理多少个多个值,则可以映射到std::array <T>

std::map <std::string, std::vector <int>> map;
map ["A"].push_back(10);
map ["B"].push_back(20);
map ["A"].push_back(42);

如果您正在处理我上面显示的内容,您可以类似地使用std::multimap <std::string, int>

std::multimap <std::string, int> map;
map.insert({"A", 10});
map.insert({"B", 20});
map.insert({"A", 42});

如果您想将一个键映射到多个值以保存不同类型的信息,您可以使用std::map <std::string, std::vector <std::tuple <int, std::string, std::pair <int, int>>>> // ...etc. .

您也可以使用某种结构数据类型的向量来代替上述示例中的元组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM