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

#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;
}


 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值