网上的随机洗牌代码:

ooolinux 2023-01-22 19:26:55
//random_device后面的{}是什么意思?
	std::mt19937 gen(std::random_device{}()); 
	std::shuffle(vec.begin(),vec.end(),gen);

 

...全文
67 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

只是语法糖而已:
std::random_device rd;
std::random_device rd1{}; // C++11
// use hardware random number generator
std::random_device rd2{"hw"}; // C++11
printf("%u %u %u %u\n", std::random_device{"hw"}(), rd(), rd1(), rd2());

ooolinux 7天前
  • 举报
回复
@日立奔腾浪潮微软松下联想 rd是一个对象,rd()什么意思,不是函数调用?
@ooolinux 重载了(),可以省略一个函数名~
ooolinux 6天前
  • 举报
回复
@日立奔腾浪潮微软松下联想 这个算不算仿函数?
4条回复
  • 打赏
  • 举报
回复

c++11特性,{}里是初始化列表,运算符()返回一个生成的随机数。
std::random_device{}()意思就是默认初始化一个临时random_device实例并返回一个随机数。

ooolinux 8天前
  • 举报
回复
@日立奔腾浪潮微软松下联想 这个{}初始化列表语法有没有简单的例子?
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2023-01-22 19:26
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下