读书人

C++ Primer multisetlt;Sales_item,com

发布时间: 2013-01-18 10:22:42 作者: rapoo

C++ Primer multiset<Sales_item,comp> items求解
c++ Primer 中超市购物系统中

inline bool compare(const Sales_item &lhs,const Sales_item &rhs)
{
return lhs->book()<rhs->book(); //调用Item_base *operator->()操作符。。
}
class Basket
{
typedef bool (*comp)(const Sales_item&,const Sales_item&);
public:
typedef std::multiset<Sales_item,comp> set_type;
typedef set_type::size_type size_type;
typedef set_type::const_iterator const_iter;
Basket():items(compare){}
void add_item(const Sales_item &item){items.insert(item);}
size_type size(const Sales_item &i)const{return items.count(i);}
double total()const;
private:
std::multiset<Sales_item,comp> items;
};

compare是Basket的成员函数吗?为什么这样定义?

另外 Basket():items(compare){}
items是一个容器,而compare却是一个函数指针,这样初始化行吗?
[解决办法]
1. compare不是成员函数。
2. multiset的构造函数有3中形式(c++98)

explicit multiset( const Compare& comp = Compare(),
const Allocator& alloc = Allocator() );

template< class InputIt >
multiset( InputIt first, InputIt last,
const Compare& comp = Compare(),
const Allocator& alloc = Allocator() );

multiset( const multiset& other );

读书人网 >C++

热点推荐