(map&C++)(六、取消和替换sort排序)

本文介绍如何在C++中取消map的自动排序功能,特别针对数字类型的key,并展示了如何通过自定义比较器实现逆序输出。同时,提供了一个示例说明如何用vector和pair替代map来存储和处理字符串类型的键值对,避免默认排序。
摘要由CSDN通过智能技术生成

今天写一道csp题的时候,因为map的key的自动排序,差点搞死我

1、取消map的sort排序(只能取消number类型的)(而且的逆序输出)

#include <iostream>
#include <map>

using namespace std;

template<class T>
struct DisableCompare : public std::binary_function<T, T, bool>{
	bool operator()(T lhs, T rhs) const{
		return true;
	}
};

int main(){

 	std::map<int, double, DisableCompare<int> > map1;
 	
	map1.insert(pair<int,double>(1, 1.3));
	map1.insert(pair<int,double>(5, 5.3));
	map1.insert(pair<int,double>(2, 4.3));
	map1.insert(pair<int,double>(6, 2.3));
	map1.insert(pair<int,double>(4, 0.3));

	map<int,double>::reverse_iterator it = map1.rbegin();
	for (; it != map1.rend(); it++)
	{
		cout << it->first << "=>" << it->second << endl;
	}

	return 0;
}
结果

在这里插入图片描述

2、替换map的sort排序(替换string类型为例)

//模拟map使用
typedef  pair<string,string> spair__;
typedef  vector<spair__> vector_type;
vector_type vec;
//主函数
int main(){
	int n;cin >> n;
	while(n){
		string key,value;
		cin >> key >> value;
		vet.push_back(spair__(key,value));
		n--;
	}

	for(vector_type::iterator iter = vec.begin(); iter != vec.end(); iter++){
		cout << iter->first << "->" << iter->second << endl;
	}

	return 0;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzh~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值