【发布时间】:2013-10-28 18:25:15
【问题描述】:
我的手上装满了物品,每个物品都包含几个字符串。现在它被设置为结构,每个结构都包含一个带有键 1...n 的映射,每个字符串一个 (map<int,string> strs),如果存在更好的方法,可以更改它。我需要在不重叠的情况下随机访问所有这些字符串,并且知道我已经完成了。我该如何做到这一点,无论是使用地图还是其他数据结构?谢谢。
【问题讨论】:
-
您需要按随机顺序枚举这些字符串多少次?一次?很多次?
-
是否所有的字符串都是唯一的,或者每个对象中的映射是否可以包含也在另一个对象的映射中的字符串?
-
我认为您正在寻找“洗牌”。样本很多(通常搜索“洗牌套牌+语言”会得到很好的结果)
-
为什么不使用
std::vector而不是std::map?如果只是因为您想要基于 1 的索引而不是基于 0 的索引,那么以下两种方法都会更有效:(1) 忽略元素 0 的存在,或 (2) 将 1 添加到索引中。