我正在尝试将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")
知道我做错了吗?
答案 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
没有必要