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

C++ Primer multiset<Sales_item,comp> items求解解决方案

2013-01-18 
C++ PrimermultisetSales_item,comp items求解c++ Primer 中超市购物系统中inline bool compare(const S

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

热点排行