1

これを含めずに書いたところ、正常に実行されました。srandとはrandom_shufflestd ライブラリにありますか? 奇妙ですね。

リンクhereおよびhereは、アルゴリズムライブラリにあると言います。

#include <array>
#include <time.h>
#include <vector>
using namespace std;
    int main()                                          
    {
        vector<int> myvector;
        srand((unsigned)time(NULL));
        for (int i=0; i<10; ++i) 
            {myvector.push_back(i);}
        random_shuffle ( myvector.begin(), myvector.end() );
    }
4

2 に答える 2

10

C++ は、他の標準ヘッダーに含まれる標準ヘッダーを指定しないため、実装によって異なります。移植可能にするには、使用しているヘッダーを常に直接インクルードする必要がありますが、コードはそれなしでコンパイルされることがよくあります。これは決して異常なことではありません。

于 2012-06-20T19:15:15.970 に答える
1

多くのコンパイラには、コマンド ラインまたは設定で追加のインクルード ファイルを指定する機能があります。これらのヘッダーが自動的に含まれていないことを確認してください。メイクファイルもチェックしてください。

呼び出している関数のプロトタイプがない場合、C++ はプログラムをコンパイルしません。

于 2012-06-20T19:19:11.143 に答える