diff options
author | Brook Zhou <zz3599@yahoo.com> | 2015-10-31 16:17:58 -0700 |
---|---|---|
committer | Brook Zhou <zz3599@yahoo.com> | 2015-10-31 16:27:42 -0700 |
commit | c3e769e4ac50d4475a530969663e073f4ff002ca (patch) | |
tree | 45a68dbe1c1d62b1ee8abf900687976c1f99dc65 /c++.html.markdown | |
parent | 5b0db44e7c5f0a69dfa670eee13fbc011f76830a (diff) |
[cpp/en] comparator function for std containers
Diffstat (limited to 'c++.html.markdown')
-rw-r--r-- | c++.html.markdown | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/c++.html.markdown b/c++.html.markdown index d03092e5..6b452b1b 100644 --- a/c++.html.markdown +++ b/c++.html.markdown @@ -801,6 +801,24 @@ void doSomethingWithAFile(const std::string& filename) // all automatically destroy their contents when they fall out of scope. // - Mutexes using lock_guard and unique_lock +// containers with object keys of non-primitive values (custom classes) require +// compare function in the object itself or as a function pointer. Primitives +// have default comparators, but you can override it. +class Foo { +public: + int j; + Foo(int a) : j(a) {} +}; +struct compareFunction { + bool operator()(const Foo& a, const Foo& b) const { + return a.j < b.j; + } +}; +//this isn't allowed (although it can vary depending on compiler) +//std::map<Foo, int> fooMap; +std::map<Foo, int, compareFunction> fooMap; +fooMap[Foo(1)] = 1; +fooMap.find(Foo(1)); //true ///////////////////// // Fun stuff |