multiset

C++多集合排序示例
本文介绍了一个使用C++实现的多集合排序示例,通过定义特定的比较器来对包含字符串数据的结构体进行排序。具体展示了如何创建自定义的比较函数,并将其应用于标准模板库(STL)中的multiset容器。
#include <string>
#include <set>
#include <iostream>

struct TableItem
{
	int id;
	std::string idText;
	std::string positionText;
	std::string shearText;
	std::string momentText;
};

struct CompareIDText
{
	bool operator()(const TableItem * t1, const TableItem * t2) const;
};

bool CompareIDText::operator()(const TableItem * t1, const TableItem * t2) const
{
	//非零即真 
	int res = strcmp(t1->idText.c_str(), t2->idText.c_str());
	if (res < 0)
	{
		return true;
	}
	return false;
}

void main()
{
	const int arraySize = 5;
	TableItem items[arraySize];
	items[0].idText="1";
	items[0].positionText="10";
	items[1].idText="2";
	items[1].positionText="20";
	items[2].idText="3";
	items[2].positionText="30";
	items[3].idText="1";
	items[3].positionText="40";
	items[4].idText="2";
	items[4].positionText="50";

	typedef std::multiset<TableItem *, CompareIDText> Tables;
	Tables tables;
	for(int i=0; i<arraySize; ++i)
	{
		tables.insert(&items[i]);
	}

	Tables::iterator ite = tables.begin();
	Tables::iterator iteEnd = tables.end();
	TableItem * tItem;
	for(int j=1 ;ite!=iteEnd; ++ite, ++j)
	{
		tItem = *ite;
		std::cout << tItem->idText << std::endl;
	}
	
}

输出结果

1
1
2
2
3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值