1

我写这个不包括,它运行成功。srand和是否random_shuffle在标准库中?是不是很奇怪?

这里这里的链接说它们在算法库中。

#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

许多编译器能够在命令行或设置中指定额外的包含文件。确保您没有自动包含这些标题。也检查makefile。

如果程序没有您正在调用的函数的原型,C++ 将不会编译该程序。

于 2012-06-20T19:19:11.143 回答