2

一部のC++プロジェクトでTR1を使用しようとしています。残念ながら、エラーが発生し、それを正しく行う理由や方法がわかりません。私はLinuxでgcc4.4.5を使用しています。

エラーが発生します

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")  

私が間違っていることについて何か考えはありますか?

4

3 に答える 3

6

このフラグ-std=c++0xを使用すると、ご使用のバージョンのgccに実装されているc++11機能にアクセスできます。乱数分布の場合、c++11にはヘッダーがありrandomます。tr1c ++ 11を使用する場合、名前空間は必要ありません。

ランダムのtr1バージョンはincludetr1/randomにあり、そこにあるものはすべてstd::tr1名前空間の下にあります。これにアクセスするためにc++0xフラグは必要ありません。

明確にするために:

TR1乱数の場合:#include <tr1/random>およびを使用しますstd::tr1::normal_distribution

c ++ 11乱数の場合:フラグを指定してコンパイルし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 に答える