将两个值映射到一个键的最佳方式是什么?std ::映射一个键,两个值
即一个值和布尔值的项目。
尝试使用:
std::map<std::string, std::pair<std::string, bool> > myMap2
但是这似乎并不像正确的解决方案。有没有更优雅的方式来做到这一点?
将两个值映射到一个键的最佳方式是什么?std ::映射一个键,两个值
即一个值和布尔值的项目。
尝试使用:
std::map<std::string, std::pair<std::string, bool> > myMap2
但是这似乎并不像正确的解决方案。有没有更优雅的方式来做到这一点?
这确实是正确的解决方案。更一般地说,考虑使用std::tuple
而不是std::pair
作为统一接口,而不管值的数量多少(因为std::pair
明显限制为两个),或者如果编译器太老以至于不能实现std::
或std::tr1::
实现,则使用boost::tuple
。
元组是...感谢 – JonnyCplusplus 2011-04-06 01:55:37
或者一个结构体,当你的元组开始失控时... – 2011-04-06 08:23:43
@Steve:...当元组包含两个以上的项目时。 :)严重的是,当元组的内容不是以同样的方式打印或者以某种明显的方式构造时,元组会促进不可读的代码。代码说'iter-> second.get <6>()'是讨厌的。 – 2011-04-06 12:30:47
按照您的操作使用std::pair<>
,或者创建一个包含要存储的值的自定义结构。我会在大多数情况下做后者,因为这些值的名称比first
和second
更具描述性。
通常,我创建一个简单的mapValue结构体/类。
'std :: pair <>'就好了。你关心什么? – Keith 2011-04-06 01:37:59