2

I'm trying to use TR1 for some C++ project. Unfortunately I get an error and don't understand why or how I should do it correctly! I'm working under Linux with gcc 4.4.5.

I get the error

myfile.cpp:21:35: error: tr1/normal_distribution: No such file or directory     

The TR1 file I need is imported via:

#include <tr1/normal_distribution>

in CMakeLists.txt I turn on TR1 support (-std=c++0x)

SET (CMAKE_CXX_FLAGS "-Wall -std=c++0x -DNDEBUG -O3 -march=nocona -msse4.2")  

Any idea what I'm doing wrong?

4

3 回答 3

6

该标志-std=c++0x使您可以访问在您的 gcc 版本中实现的任何 c++11 功能。对于随机数分布,c++11 有 header randomtr1使用 c++11 时不需要命名空间。

random的tr1版本在 includetr1/random中,所有内容都在std::tr1命名空间下。要访问它,您不需要c++0x标志。

要清楚:

对于 TR1 随机数:#include <tr1/random>并使用std::tr1::normal_distribution.

对于 c++11 随机数:使用 flag 编译c++0x,然后#include <random>使用std::normal_distribution.

于 2012-04-18T08:06:42.257 回答
1

我相信它的#include <random>。无论如何,检查一下。

于 2012-04-18T08:03:24.287 回答
0

尝试将以下标志添加到 CMakeLists.txt 上的 cxx:

set (CMAKE_CXX_FLAGS "-stdlib=libstdc++")

-std=c++0x没有必要

于 2017-01-10T11:50:09.153 回答