结构体用于map,set时要重载运算符<

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

		for(int i = 0;i<n;i++)
		{
			tmp.time = 1;
			cin>>tmp.entry;
			if(s.find(tmp)==s.end())s.insert(tmp);
			else
			{
				set<P>::iterator it;

				it = s.find(tmp);
				tmp=*it;
				tmp.time++;
				s.erase(it);
				s.insert(tmp);
			}
		}
		set<P>::iterator itr;
		for(itr = s.begin();itr!=s.end()&&!cin.eof();itr++)
			if(itr->time % 2)
				cout<<itr->entry<<endl;
	}
}
举例:

#include <map>
#include <iostream>
#include <string>

using namespace std;

//学生信息
typedef struct tagStudentInfo
{
 int nID;
 string strName;
 bool operator <(const tagStudentInfo &A) const
 {
  if (nID < A.nID) return true;  //先比较nID
  if (nID == A.nID) return strName.compare(A.strName) < 0;   //nID相同时,再比较strName
  return false;
 }

}StudentInfo,*pstudentInfo;
时间: 2024-10-12 06:10:22

结构体用于map,set时要重载运算符<的相关文章

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

今天在做百度之星热身赛时候 发现我的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<

【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是一个指针,声明结构

golang结构体转map

package main import ( "encoding/json" "fmt" "reflect" "time" ) type Body struct { Person1 string Age int Salary float32 } func Struct2Map(obj interface{}) (data map[string]interface{}, err error) { data = make(map[s

重载运算符语法讲解

重载运算符 这篇随笔我来讲解一下C++语言中重载运算符的相关知识. 一.重载运算符的用途 这是一个比较哲学的问题:我们为什么要重载运算符? 理由就是,我们C++语言中已经给出的运算符(包括算数运算符和逻辑运算符)只是针对C++语言中已经给定的数据类型进行运算,假如我们想要对我们的自定义数据类型进行运算的话,则需要重载运算符,我们可以把重载运算符理解成对已有的运算符的一种重新定义. 比如: double a,b,c; a=1/3; b=1/2; c=a+b; printf("%lf",c

(三十八)golang--json(对切片、map、结构体进行序列化)

JSON(javascript object notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成.key-val JSON是在2001年开始推广的数据格式,目前已成为主流的数据格式. JSON易于机器解析和生成,并有效地提升网络传输效率.通常程序在网络传输时会先将数据(结构体.map)等序列化成json字符串,到接收方得到json数据时,再反序列化恢复成原来的数据类型.这种方式已成为各个语言的标准. 要解析成json格式,struct里面的字段必须大写!!!

黑马程序员学习笔记--------C语言变量类型,结构体,枚举

本章学习的知识是定义结构体,枚举等自定义的数据类型,已经宏命令,变量类型等细小的知识点,在开始本章的新知识学习之前首先我们要明白的是C语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储.变量也是有分类型的,不同类型的变量有不同的存储类型.不同的生命周期.不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型.生命周期). 一.变量类型 变量分为全局变量和局部变量. 首先说明一下局部变量的特点 1> 定义:在函数内部定义的变量,称为局部变量.形

《天天酷跑》游戏后台结构体标准化探 转

http://www.yxrb.net/thread-11839-1-1.html 在程序设计领域,程序就是数据结构加算法的理论早已深入人心.在手机游戏的后台系统中,数据结构就是各式各样的struct或class,遍布于数据存储(DB).内存(业务逻辑).网络(C/S交互协议),算法就是各种基于数据的业务处理逻辑了. 手机游戏后台数据结构有一些特点: 以整形数据为主,字符串类型比例很少,绝大部分数据可以用整形(直接或间接)表示. 相对大型端游,数据结构相对简单,绝大多数可以通过2-3层结构来抽象

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

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

黑马程序员— C语言基础之结构体、枚举、预处理、typedef的使用

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本章我们主要来学习之前所学的复杂数据类型中的同样也很重要的结构体和枚举的知识,以及C语言中的预处理,typedef的使用,简单介绍一下static和extern等一些比较杂的知识.在开始本章的新知识学习之前首先我们来学习一下根据变量的作用域的不同C语言一般把变量分为两种,局部变量和全局变量.下面我们来分别比较和体会一下这两种不同的变量类型: 根据变量的作用域,可以分为: 1. 局部变量: a.