结构体重载运算符&srand&rand
先上代码,再按代码讲解
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<algorithm>
using namespace std;
struct shudui
{
int w,e;
bool operator > (const shudui q)const
{
return w>q.w;
}
}m[105];
int main()
{
int a,s,d;
srand(time(NULL));
for(int i=0;i<=15;++i)
{
m[i].w=rand();
printf("%d ",m[i].w);
}
printf("\n");
printf("*********************\n");
for(int i=0;i<=14;++i)
if(m[i]>m[i+1]) printf("YES ");
else printf("NO ");
printf("\n");
}

一、
rand函数功能为获取一个伪随机数(伪随机数的概念下面会有介绍)。
1、函数名:
rand();
2、声明:
int rand();
3、所在头文件:
stdlib.h
4、功能:
返回一个伪随机数。之所以说是伪随机数,是因为在没有其它操作下,每次执行同一个程序,调用rand得到的随机数序列是固定的(不是真正的“随机”)。
5、为了使rand的结果更“真”一些,也就是令其返回值更具有随机性(不确定性),C语言在stdlib.h中还提供了srand函数,通过该函数可以设置一个随机数种子,一般用当前时间的毫秒数来做参数。通过time(NULL)可以获取到当前时间的毫秒值(该函数位于time.h)中。
6、使用rand的流程可以总结为:
1 调用srand(time(NULL))设置随机数种子。
2 调用rand函数获取一个或一系列随机数。
需要注意的是,srand只需要在所有rand调用前,被调用一次即可,没必要调用多次。
8、以下是随机获取10个整型值并输出的例子,辅助理解。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
注意:不能使srand()中空着
二、
1、在结构体重载运算符时如果要用sort对结构体排序,就要有bool operator < (const shudui q)const{};注意这里是‘<’号,不能对’>‘号进行重载而用于sort
2、按照1的说法,排序要用到对'<'号重载,但是对'>' '!=' '==' '>=' '<='这些符号也可以进行重载
三、(说了这么多,也该讲讲结构体重载运算符的意义)
C++中,结构体是无法进行==,>,<,>=,<=,!=这些操作的,这也带来了很多不方便的地方,尤其是在使用STL容器的时候,如果我们可以往语句中传入结构体,一些事情将会变得很简单。
比如二分查找,binary_crearch只能对数组进行查找,如果是结构体数组的话,它会报错。但很可惜,实际编程中,大部分时候操作对象是结构体数组。
原文:https://blog.csdn.net/sunny1996/article/details/51242184/
四、(重载结构体的基本形式)(之下代码的省略部分全部是之前的代码)
1、结构体内定义cmp函数
bool mmp(const shudui x, const shudui y) //其他人的博客上面写的是&x &y ,其实的一点是指针与对象,我比较倾向于使用对象
{
return x.w<y.w;
}
另一种中就是使用结构体重载‘<’
bool operator < (const shudui x)const(使用sort时必须有这个) //这个关键字operator是重载的关键字,记着吧!
{
return w<x.w;
}
其次还可重载其他符号,虽然不能在sort中使用,但是可以用来比较结构体大小,而省略‘.’之后的内容
bool operator==(const shudui b) const //这个const关键字的作用是:它表示这个函数不会修改该类的任何成员。 //如果没有这个const,编译器不会允许这个运算符用于一个const对象, //如果你认为operator<只是做个比较操作,不应该修改类的数据成员。 // 那就可以在函数后面加上一个const,编译器就不允许operator<修改类的数据成员,这样更可靠。
{
return this->w == b.w;
}
bool operator!=(const shudui b) const
{
return this->w != b.w;
}
bool operator<=(const shudui b) const
{
return this->w <= b.w;
}
bool operator<(const shudui b) const
{
return this->w < b.w;
}
bool operator>=(const shudui b) const
{
return this->w >= b.w;
}
bool operator>(const shudui b) const
{
return this->w > b.w;
}
其中this关键字相当于一个指针,所以在它用来指向结构体的元素时用的是'->'符号,this所指的对象就是你目前所用的对象
结构体重载运算符&srand&rand的更多相关文章
- C++ 结构体重载运算符
听说这个东西有很多种写法什么的,来不及了(要退役了),先整一个之前用到的,可能用到的频率比较高的东西上来. struct node{ ll x,y; }; bool operator < (co ...
- srand() rand() time(0)
标准库<cstdlib>(被包含于<iostream>中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void):从srand (seed)中指定的seed开始 ...
- srand rand
#include <stdlib.h> srand( (time(0)); rand()%100;
- srand rand 随机函数
srand函数是随机数发生器的初始化函数.原型:voidsrand(unsigned int seed); srand和rand()配合使用产生伪随机数序列.rand函数在产生随机数前,需要系统提供的 ...
- PAT A1129 Recommendation System (25 分)——set,结构体重载小于号
Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...
- 水题 ZOJ 3869 Ace of Aces
题目传送门 水题,找出出现次数最多的数字,若多个输出Nobody //#include <bits/stdc++.h> //using namespace std; #include &l ...
- poj 2387——单源最短路权值大于0
因为之前做过这个题.所以这次知道这道题有重边.这次dijkstra的写法加入了优先队列的优化 优先队列 结构体从小到大顺序的两种重载运算符的方式 bool operator <(const Ti ...
- 最短路--dijkstra+优先队列优化模板
不写普通模板了,还是需要优先队列优化的昂 #include<stdio.h> //基本需要的头文件 #include<string.h> #include<queue&g ...
- P3223 [HNOI2012]排队
题目描述 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) 输入输 ...
随机推荐
- 一些char和byte对应的字符
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 2 ...
- Andriod App类型简介
App三种类型与区别 原生应用程序:(Native App) 原生APP是什么?原生APP就是利用Android.iOS平台官方的开发语言.开发类库.工具进行开发.比如安卓的java语言,iOS的ob ...
- Mysql——Navicat 连接MySQL 8.0.11 出现2059错误
原因 mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password 解决 更改加密规则: mysql -u ...
- eclipse报错 : One or more constraints have not been satisfied.
当eclipse进行报错时,但是不影响运行时,这种错误一般是编译时的问题 进行修改3个地方,即可完成 一 : 进行修改这三个地方的配置文件,都改成你统一的jdk版本,和你用的Dynamic Web ...
- CodeForces666E Forensic Examination
题目描述 给你一个串S以及一个字符串数组T[1..m],q次询问,每次问S的子串S[pl..pr]在T[l..r]中的哪个串里的出现次数最多,并输出出现次数. 如有多解输出最靠前的那一个. 题解 ...
- 如何确定Kafka的分区数、key和consumer线程数
[原创]如何确定Kafka的分区数.key和consumer线程数 在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试 ...
- request param 获取
通过request对象获取客户端请求信息 getRequestURL方法返回客户端发出请求时的完整URL. getRequestURI方法返回请求行中的资源名部分. getQueryString 方法 ...
- Java中String连接性能的分析【转】
[转]http://www.blogjava.net/javagrass/archive/2010/01/24/310650.html 总结:如果String的数量小于4(不含4),使用String. ...
- (BFS) leetcode 279. Perfect Squares
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...
- Gaussian Process for Regression
python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...