0
キーに基づいてstd :: multisetに挿入された要素の数をカウントできるように、おそらくクラスの文字列演算子をオーバーロードしたいとします。 私は「」次のクラス指定されたタイプの合計オブジェクトを取得したいと思います:キーマルチセットの文字列演算子のオーバーロード
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;
}
を私はtota
、この場合には2を返すことを期待します。 しかし、私はどのように進めるかを知りません。代わりにあなたがoperator<
機能でそれを使用していないので、価格は何もすることができ
auto tota = items_.count("a");
使用
auto tota = items_.count(Item("a", 0));
の
==演算子の意味ですか? – trexgris
私はそのためのオブジェクトの作成を避けたいと思っていましたが、このケースで可能かどうかは分かりません... – trexgris
@trexgris、no。 'std :: multiset'は' operator == 'を使用しません。 'operator <'だけ必要です。 –