std::vector 的高效洗牌
當洗牌 std::vector 時,效率起著至關重要的作用。提供的使用中間數組和特定於類型的知識的方法並不是最佳的。
現代C 方法
在C 11 及更高版本中,可以使用更有效的方法:
#include <algorithm> #include <random> auto rng = std::default_random_engine {}; std::shuffle(std::begin(cards_), std::end(cards_), rng);
此方法利用std ::shuffle 函數,可以有效地隨機化元素。請記住在多個 std::shuffle 呼叫中重複使用 rng 實例,以實現一致的隨機化。
個人化洗牌
如果您希望在程式執行中獲得不同的隨機序列,請播種隨機序列輸出為std::random_device:
auto rd = std::random_device {}; auto rng = std::default_random_engine { rd() }; std::shuffle(std::begin(cards_), std::end(cards_), rng);
C 的引擎98方法
對於 C 98,std::random_shuffle 函數仍然適用:
#include <algorithm> std::random_shuffle(cards_.begin(), cards_.end());
以上是如何在 C 中有效地洗牌 std::vector ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!