rt,写treap,不知道为什么的报错,我看网上都这么写的啊
我的代码
#include <iostream>
#include <vector>
#include <random>
using namespace std;
int n;
int rt;
struct node{
int w;
int pri;
int ct;
int fa;
int ls;
int rs;
};
vector<node> tree;
mt19937 getpri();
int newnode(int w)
{
int pri=getpri();
tree.push_back(node{w,pri,1,-1,-1,-1});
return tree.size()-1;
}
//以下main等省略
然后蜜汁报错:
> Executing task: C/C++: g++.exe 生成活动文件 <
正在启动生成...
C:\msys64\mingw64\bin\g++.exe -g D:\codes\cpp\Treap.cpp -o D:\codes\cpp\Treap.exe
D:\codes\cpp\Treap.cpp: In function 'int newnode(int)':
D:\codes\cpp\Treap.cpp:22:19: error: cannot convert 'std::mt19937' {aka 'std::mersenne_twister_engine<unsigned int, 32, 624, 397, 31, 2567483615, 11, 4294967295, 7, 2636928640, 15, 4022730752, 18, 1812433253>'} to 'int' in initialization
22 | int pri=getpri();
| ~~~~~~^~
| |
| std::mt19937 {aka std::mersenne_twister_engine<unsigned int, 32, 624, 397, 31, 2567483615, 11, 4294967295, 7, 2636928640, 15, 4022730752, 18, 1812433253>}
生成已完成,但出现错误.
终端进程启动失败(退出代码: -1)。
终端将被任务重用,按任意键关闭。
求谷上大佬解答!!!