set容器中放入结构体时需要重载运算符<

今天在做百度之星热身赛时候 发现我的Set容器不行了   由于放入的是结构体 总是报错

找了n久的错误啊   也没有找到 最后和别人的代码对比才发现少些了一部分

在网上又搜搜 发现当set容器放入结构体内容是 需要重载运算符<   也就是写出来比较规则

struct node
{
    int a,b,c,d;
    bool friend operator<(node x,node y)
    {
    	if(x.a<y.a) return true;
    	if(x.a==y.a&&x.b<y.b) return true;
    	if(x.a==y.a&&x.b==y.b&&x.c<y.c) return true;
    	if(x.a==y.a&&x.b==y.b&&x.c==y.c&&x.d<y.d) return true;
    	return false;
    }
}code[1005],ip[55];

写完这些之后就可以定义set<node>s

时间: 2024-10-12 06:10:30

set容器中放入结构体时需要重载运算符<的相关文章

stl容器之--自定义结构体作为stl容器元素成员的使用

自定义结构体作为stl容器元素成员的设计要求之一是:在对待自定义类型时和内置类型必须是一致的,甚至自定义类型的支持更好. <C++标准程序库>: set和multiset set和multiset会根据特定的排序准则,自动将元素排序.两者不同在于multiset允许重复而set不允许. 只要是assignable.copyable.comparable(根据某个排序准则)的型别T,都可以成为set或multiset的元素型别.没有传入特别排序准则,就采用缺省准则less(这是一个仿函数,以op

定义结构体时的初始化默认值

结构体变量定义时的初始化问题: 默认值同变量一样,int型的为0,指针型的为"NULL"------------并不是整个结构体为NULL,其中的int型还是有值0的,只是指针型的为NULL 验证一下: #include "stdafx.h" struct stu { int data; char *name; }boy1,girl={102,"xiaom"}; int _tmain(int argc, _TCHAR* argv[]) { pri

c语言中的结构体为值类型,当把一个结构体赋值给另一个结构体时,为值传递

#include <stdio.h> int main() { struct person { int age; }; struct person p1 = {19}; //值传递,将p1中所有成员变量的值赋值个p2中对应的成员变量 struct person p2=p1; //改变p1的成员变量的值,不会影响p2中对应成员变量的值 p1.age = 20; printf("p1.age=%d\n",p1.age); printf("p2.age=%d\n&quo

结构体用于map,set时要重载运算符&lt;

#include<iostream> #include<set> using namespace std; struct P { int entry; int time; bool operator<(const P &b)const { return (this->entry<b.entry); } }; int main() { while(!cin.eof()) { int n; cin>>n; set<P> s; P tmp

计算机二级-C语言-程序填空题-190112记录-结构体的遍历和结构体的数据的交换处理,文件的操作。

//程序设计题:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数. //重难点:结构体的定义.结构体的使用.文件指针的定义.对文件的操作.输出格式'%4d'.两种方法获取最小值. 1 #include <stdio.h> 2 #define N 16 3 typedef struct//定义一个新结构体类型 4 { char num[10];

【C语言】使用结构体和malloc函数时的一些错误。

使用结构体错误: #include <stdio.h> struct STU { char *name; int score; }stu,*pstu; int main () { strcpy(stu.name,"bit-tech"); strcpy(pstu->name,"bit-tech"); return 0; } 错误一:strcpy(stu.name,"bit-tech"); 结构体中的成员name是一个指针,声明结构

linux块设备驱动---相关结构体(转)

上回最后面介绍了相关数据结构,下面再详细介绍 块设备对象结构 block_device 内核用结构block_device实例代表一个块设备对象,如:整个硬盘或特定分区.如果该结构代表一个分区,则其成员bd_part指向设备的分区结构.如果该结构代表设备,则其成员bd_disk指向设备的通用硬盘结构gendisk 当用户打开块设备文件时,内核创建结构block_device实例,设备驱动程序还将创建结构gendisk实例,分配请求队列并注册结构block_device实例. 块设备对象结构blo

vector存放结构体数据的2种方法

如果要在Vector容器中存放结构体类型的变量,经常见到两种存放方式. 方式一:放入这个结构体类型变量的副本. 方式二:放入指向这个结构体类型变量的指针. 假设结构体类型变量是这样的, typedef struct student{ char school_name[100]; char gender; int age; bool is_absent; } StudentInfo; 那么,方式一和方式二的实现分别如下所示: /*[方式一] 结构体放栈中,vector中放副本-----------

[C/C++基础] 3.结构体、共用体、枚举

概述: 结构体和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,其次相同结构的结构体变脸是可以相互赋值的. 共用体(联合体)和结构体都是由多个不同的数据类型成员组成,但在任何同一时刻,共用体值存放了一个被选中的成员.而结构体的所有成员都存在. C++的枚举(enum)工具提供了另外一种可以替代const来创建符号常量的方式,枚举表是枚举常量的集合. 3.1 结构体struct 结构体类型变量的定义一般形式为: struct 结构体类型名{ 类型1 成员名1; 类型2 成员名2;