您的位置:首页 > 编程语言 > C语言/C++

c++中,为什么头文件包含了stdlib.h,但是random函数显示有错。

2012-04-12 16:07 393 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐