- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:04:54 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part66 pc12.2ch.net/test/read.cgi/tech/1231640498/ ※part63, part66 が重複していたようですので part69 としました。
- 9 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:52:57 ]
- 前スレ>>994
std::multisetのoperator>は任意のクラスの比較オブジェクト若しくは 比較関数を定義する時に用いる 挿入順序を決定する struct Set { int a; double b; Set(int i, double d) : a(i), b(d) {} }; bool operator>(const Set& a, const Set& b) { return a.b > b.b; } int main() { std::multiset<Set, std::greater<Set> > ms; ms.insert(Set(1, 2.0)); ms.insert(Set(2, 1.0)); for (std::multiset<Set, std::greater<Set> >::const_iterator pos = ms.begin(); pos != ms.end(); ++pos) std::cout << pos->a << ' ' << pos->b << std::endl; }
- 10 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 22:07:51 ]
- 但し次のような例ではstd::greaterを定義していても暗黙の内に
<()std::less)が使われるので定義しておかなければならない。 struct Set { int a; double b; Set(int i, double d) : a(i), b(d) {} }; bool operator>(const Set& a, const Set& b) { return a.b > b.b; } bool operator<(const Set& a, const Set& b) { return a.b < b.b; } int main() { std::multiset<Set, std::greater<Set> > ms, ms2; ms.insert(Set(1, 2.0)); ms.insert(Set(2, 1.0)); ms2.insert(Set(1, 0.0)); ms2.insert(Set(1, 0.5)); for (std::multiset<Set, std::greater<Set> >::const_iterator pos = ms.begin(); pos != ms.end(); ++pos) std::cout << pos->a << ' ' << pos->b << std::endl; if (ms > ms2) std::cout << "ms > ms2\n"; }
|

|