【发布时间】:2012-10-13 11:25:06
【问题描述】:
如何在 C++ 中打乱 stl 指针列表? 我在类 Player 上有 stl 指针向量,我像
一样随机播放std::random_shuffle(players.begin(), players.end());
是否已经有不需要随机访问的随机列表算法,或者我需要将列表转换为向量 => 随机播放 => 回到列表?有没有更优雅的解决方案?
【问题讨论】:
-
有什么理由需要使用列表吗?
-
请考虑,列表几乎总是远低于向量,即使在历来被视为优越的领域也是如此。
-
@BenjaminLindley 我需要大量的插入操作和列表是更好的选择,而且我已经继承了该代码并且有严格的截止日期,所以我现在不想赌博
-
您可能会问自己为什么首先使用
std::list。std::list闪耀的情况是:1)您需要迭代器始终保持有效(例如,存储它们,但指向std::deque元素或向量中索引的指针是要考虑的替代方案),2)您想要恒定时间拼接.如果您既不需要 1 也不需要 2,请使用其他内容(这意味着deque、vector或[multi]set)。