非公開メンバ検索用
ゲッターを使って検索します
ゲッターの形式は、
Type getter() const;
か
Type getter();
非constなゲッターって需要あるのかわかんないけど、とりあえず作った
template <class Iterator, class Target, class Type, class ClassName> inline Iterator mem_find(Iterator first, Iterator last, const Target& target, Type (ClassName::*member)()) { while (first != last) { if (((*first).*member)() == target) break; ++first; } return first; } template <class Iterator, class Target, class Type, class ClassName> inline Iterator mem_find(Iterator first, Iterator last, const Target& target, Type (ClassName::*member)() const) { while (first != last) { if (((*first).*member)() == target) break; ++first; } return first; }
使い方 ↓↓↓↓↓↓↓
class hoge { string name_; public: hoge(const string& name="") : name_(name) {} string get_name() const { return name_; } }; int main() { vector<hoge> v; v.push_back(hoge("Akira")); v.push_back(hoge("Johnny")); v.push_back(hoge("Sum")); if (mem_find(v.begin(), v.end(), "Akira", &hoge::get_name) != v.end()) cout << "該当あり" << endl; else cout << "該当なし" << endl; return 0; }