C++ 重载键多集的字符串运算符

C++ 重载键多集的字符串运算符,c++,overloading,operator-keyword,multiset,C++,Overloading,Operator Keyword,Multiset,我想重载我的类的字符串操作符,以便根据键计算插入std::multiset的元素数。 我希望在给定以下类的情况下获得类型为“a”的total对象: class Item { public: Item(); Item(std::string type, float price); friend bool operator <(const Item & lhs, const Item & rhs); friend bool operato

我想重载我的类的字符串操作符,以便根据键计算插入std::multiset的元素数。 我希望在给定以下类的情况下获得类型为“a”的total对象:

  class Item
{
public:
    Item();
    Item(std::string type, float price);

    friend bool operator <(const Item & lhs, const Item & rhs);

    friend bool operator == (const Item & lhs, const Item & rhs);

    virtual ~Item();

private:
    std::string type_;
    float price_;
};

bool operator<(const Item & lhs, const Item & rhs)
{
    return (lhs.price_ < rhs.price_);
}

bool operator == (const Item & lhs, const Item & rhs)
{
    return (lhs.type_ == rhs.type_);
}

 int   main(){
        Item a("a", 99999);
        Item b("b", 2);
        Item c("c", 5);
        Item d("d", 5);
        Item e("e", 555);
        Item f("f", 568);
        Item g("a", 99999);

    std::multiset <Item> items_;

    items_.insert(a);
    items_.insert(b);
    items_.insert(c);
    items_.insert(d);
    items_.insert(g);
    items_.insert(a);

    auto tota = items_.count("a");

    return 0;
    }
类项目
{
公众:
项目();
项目(标准:字符串类型,浮动价格);
friend bool运算符代替

auto tota = items_.count("a");
使用


价格可以是任何东西,因为你不在==运算符函数的
运算符中使用它。我也想避免为此创建对象,但我不知道在这种情况下是否可能…@trexgris,不。
std::multiset
不使用
运算符==
。它只需要
运算符,但仍然有一种方法可以实现取消创建对象以检查类型为“a”的项目范围,或者只是获取计数?@trexgris,我认为没有任何方法可以避免创建对象。
auto tota = items_.count(Item("a", 0));
bool operator<(const Item & lhs, const Item & rhs)
{
   return (lhs.type_ < rhs.type_);
}