std :: map一键,两个值

Jon*_*lus 13 c++ stl

将两个值映射到一个键的最佳方法是什么?

即具有值和布尔值的项目.

尝试使用:

std::map<std::string, std::pair<std::string, bool> > myMap2
Run Code Online (Sandbox Code Playgroud)

但这似乎不是正确的解决方案.有没有更优雅的方式来做到这一点?

ild*_*arn 7

这确实是正确的解决方案.更一般地,考虑使用std::tuple而不是std::pair统一接口而不管值的数量(std::pair显然限于两个),或者boost::tuple如果您的编译器太旧而无法附带std::std::tr1::实现.


Joh*_*nck 6

可以std::pair<>像您一样使用,也可以创建包含要存储的值的自定义结构.在大多数情况下我会做后者,因为这些值的名称比first和更具描述性second.