簡體   English   中英

C ++隨機生成器mt19937,在 <random> 要么 <bits/random.h> ?

[英]C++ random generator mt19937, is it in <random> or <bits/random.h>?

我已經從這里和(更明確地) 在這里確認,您需要#include<random>才能使用std::mt19937 ,但是當我在CLion中執行此操作時,CLion將其標記為紅色,並建議它位於<bits/random.h> 那么是哪一個呢? 我應該#include兩者兼而有之? 但是我認為不建議使用帶有.h擴展名的頭文件?

順便說一下,我在CentOS Linux版本7.1.1503上將CLion 1.2.1和GCC 4.8.3一起使用。

這是<random>

<bits/random.h>是GCC特定的實現。 僅包括<random>

CLion通過搜索實際定義的缺失類的位置來普遍地進行此操作,對於GCC,它是<bits/random.h> ,這就是為什么建議將其包括在內。 這不是形式上的錯誤,但這是非跨平台的,甚至是非交叉編譯的。

您應該升級GCC (2015年11月的當前版本為GCC 5.2 ,它具有更好的C ++ 11支持),並將其作為g++ -std=c++11調用(也可以使用-Wall -Wextra -g來獲取所有內容)警告,更多警告和調試信息),那么當然可以使用#include <random> ,如此處所述

(可以通過從下載的源代碼中進行編譯來升級到GCC 5.2;如果需要,可以詢問其他問題)

如果僅直接#include <bits/random.h>直接是特定於實現的( 絕不包括自己的bits/*.h 。h內部頭文件)和IIRC,則會收到錯誤消息(或至少出現嚴重警告)。

您無需使用Clion。 編譯器是GCC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM