次のようなクラスFooがあるとします。
class Foo {
public:
std::vector<Bar> barVec() const {return barVec_;}
private:
std::vector<Bar> barVec_;
};
ここで、Barは他のクラスです。したがって、Fooの外部では、barVec_への唯一のアクセスはメソッドbarVec()を介して行われます。
myFooがFooのインスタンスであり、predがBarの単項述語である場合、次のようなことをしても大丈夫ですか。
auto i = find_if(myFoo.barVec().begin(), myFoo.barVec().end(), pred);
if (i != myFoo.barVec().end()) {
//do some stuff here
}
または、myFoo.barVec()を変数に割り当てて、その変数を反復処理する必要がありますか?例えば:
std::vector<Bar> tmp = myFoo.barVec();
auto i = find_if(tmp.begin(), tmp.end, pred);
if (i != tmp.end()) {
//do some stuff here
}