c++中,为什么头文件包含了stdlib.h,但是random函数显示有错。
2012年04月12日 16:07:08 oneboyishappy 阅读数:10782
-
#include <iostream>
-
#include <stdlib.h> // Need random(), srandom()
-
#include <time.h> // Need time()
-
#include <algorithm> // Need sort(), copy()
-
#include <vector> // Need vector
-
using namespace std;
-
void Display(vector<int>& v, const char* s);
-
int main()
-
{
-
// Seed the random number generator
-
srandom( time(NULL) );
-
// Construct vector and fill with random integer values
-
vector<int> collection(10);
-
for (int i = 0; i < 10; i++)
-
collection[i] = random() % 10000;
-
// Display, sort, and redisplay
-
Display(collection, "Before sorting");
-
sort(collection.begin(), collection.end());
-
Display(collection, "After sorting");
-
return 0;
-
}
-
// Display labels and contents of integer vector v
-
void Display(vector<int>& v, const char* s)
-
{
-
cout << endl << s << endl;
-
copy(v.begin(), v.end(),ostream_iterator<int>(cout, "\t"));
-
cout << endl;
-
}
运行:
3.cpp
E:\workspace\test\3.cpp(14) : error C2065: 'srandom' : undeclared identifier
E:\workspace\test\3.cpp(19) : error C2065: 'random' : undeclared identifier
执行 cl.exe 时出错.
2.exe - 1 error(s), 0 warning(s)
原来:在linux下stdlib.h包含srandom 和random ,但在VC下stdlib.h包含的是srand和rand,所以应该改过来
-
#include <iostream>
-
#include <stdlib.h> // Need random(), srandom()
-
#include <time.h> // Need time()
-
#include <algorithm> // Need sort(), copy()
-
#include <vector> // Need vector
-
using namespace std;
-
void Display(vector<int>& v, const char* s);
-
int main()
-
{
-
// Seed the random number generator
-
srand( time(NULL) ); // srandom----->srand
-
// Construct vector and fill with random integer values
-
vector<int> collection(10);
-
for (int i = 0; i < 10; i++)
-
collection[i] = rand() % 10000; // random----->rand
-
// Display, sort, and redisplay
-
Display(collection, "Before sorting");
-
sort(collection.begin(), collection.end());
-
Display(collection, "After sorting");
-
return 0;
-
}
-
// Display labels and contents of integer vector v
-
void Display(vector<int>& v, const char* s)
-
{
-
cout << endl << s << endl;
-
copy(v.begin(), v.end(),ostream_iterator<int>(cout, "\t"));
-
cout << endl;
-
}