tr1 / normal_distribution:没有这样的文件或目录

时间:2012-04-18 08:00:11

标签: c++ gcc cmake tr1

我正在尝试将TR1用于某些C ++项目。不幸的是我收到错误,不明白为什么或如何正确地做到这一点! 我正在使用gcc 4.4.5在Linux下工作。

我收到错误

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

我需要的TR1文件是通过以下方式导入的:

#include <tr1/normal_distribution>
在CMakeLists.txt中的

我打开TR1支持(-std = c ++ 0x)

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

知道我做错了吗?

3 个答案:

答案 0 :(得分:6)

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

随机的tr1版本包含tr1/random,其中的所有内容都位于std::tr1命名空间下。要访问它,您不需要c++0x标记。

要明确:

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

对于c ++ 11随机数:使用标记c++0x进行编译,然后使用#include <random>进行编译并使用std::normal_distribution

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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