首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

multiset有两个参数吗?解决思路

2012-02-07 
multiset有两个参数吗?std::multisetSales_item,Comp itemsComp是 typedef (*Comp)( const Sales_item&

multiset有两个参数吗?
std::multiset<Sales_item,Comp> items;  
Comp是 typedef (*Comp)( const Sales_item&, const Sales_item& );
 //multiset有两个参数吗?谢谢各位!


[解决办法]
这里是自定义一个比较函数。
[解决办法]
http://hi.baidu.com/wangruiy01/blog/item/9dd844a56a59eafd9152ee7d.html
5,自定义比较函数:
For example:
#include<iostream>
#include<set>
using namespace std;

typedef struct {
int a,b;
char s;
}newtype;

struct compare //there is no ().
{
bool operator()(const newtype &a, const newtype &b) const
{
return a.s<b.s;
}
};//the “; ” is here;

set<newtype,compare>element;
int main()
{
newtype a,b,c,d,t;
a.a=1; a.s='b';
b.a=2; b.s='c';
c.a=4; c.s='d';
d.a=3; d.s='a';

element.insert(a);
element.insert(b);
element.insert(c);
element.insert(d);
set<newtype,compare>::iterator it;

for(it=element.begin(); it!=element.end();it++)
cout<<(*it).a<<" ";
cout<<endl;
for(it=element.begin(); it!=element.end();it++)
cout<<(*it).s<<" ";
}
element自动排序是按照char s的大小排序的;
[解决办法]
是的,不然怎么排序呢?
[解决办法]
std::multiset<Sales_item,Comp> items;
Comp是 typedef (*Comp)( const Sales_item&, const Sales_item& );
 //multiset有两个参数吗?谢谢各位!

第一个参数Sales_item是模板参数的类型,比如int,double等
第二个参数Comp是比较函数,有时称为谓词,就是确定两个Sales_item,谁大谁小的函数
如果Sales_item是一个自定义类型,比如struct或者class
就要重载这个函数
但是对于基本类型,这个函数没有必要添加

热点排行