【发布时间】:2018-03-28 01:26:43
【问题描述】:
运行下面的代码时,出现以下错误。你能解释一下为什么以及我应该做什么吗?我在网上找到了与图书馆相关的代码,但它不起作用。我正在使用 DevC++ 5.11。
- default_random_engine 不是“std”的成员
- uniform_real_distribution 不是“std”的成员
- 'generator' 未在此范围内声明
- 'distribution' 未在此范围内声明
另外,我如何在 C++ 中计算时间?
#include <iostream>
#include <random>
int main() {
int i, j, n, nmax;
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0,1.0);
nmax = 3000;
for (n=200; n<nmax; i+=200) {
double x[n], y[n], A[n][n];
for (i=0; i<n; i++) {
x[i] = distribution(generator);
y[i] = 0;
for (j=0; j<n; j++) {
A[i][j] = distribution(generator);
}
}
// start counting time
for (i=0; i<n; i++) {
for (j=0; j<n; j++) {
y[i] = A[i,j] * x[j];
}
}
// stop counting time
// total_time = stop - start
// std::cout << total_time
}
return 0;
}
【问题讨论】:
-
除了应该是
A[i][j]的A[i,j]之外,没有其他编译器错误:无法重现:godbolt.org/g/g1Rf9C -
确保使用
-std=c++11进行编译。以下是在 DevC++ 中的操作方法:stackoverflow.com/questions/16951376/… -
确保启用 C++11
-
"DevC++ 5.11" 这有点无关紧要。那就是IDE。编译器才是最重要的。
-
@bolov 好吧,VLA 分开:godbolt.org/g/sKEHko