【发布时间】:2018-06-18 05:13:13
【问题描述】:
Since C++11, std::shuffle() 对随机位生成器进行右值引用:
template<class RandomIt, class URBG>
void shuffle(RandomIt first, RandomIt last, URBG&& g);
所以我可以这样称呼它:
std::vector<int> v = {...};
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
这揭示了我对 C++ 的理解中的一个错误,这是我今天早上阅读时无法满足的:在这里使用右值引用可以获得什么?换句话说,为什么不是这样
template<class RandomIt, class URBG>
void shuffle(RandomIt first, RandomIt last, URBG& g);
【问题讨论】:
-
那不是转发引用吗?