我正在寻找一种通用、可重复使用的方法来对C++中的std::vector
进行洗牌。这是我的当前方法,但我认为它并不是非常高效,因为它需要一个中间数组,并且需要知道项目类型(在此示例中为DeckCard):
srand(time(NULL));
cards_.clear();
while (temp.size() > 0) {
int idx = rand() % temp.size();
DeckCard* card = temp[idx];
cards_.push_back(card);
temp.erase(temp.begin() + idx);
}
rand()
,有更好的随机数生成器API可用(例如Boost.Random或0x<random>
)。 - Cat Plus Plus