標準ライブラリ関数を使用して値のベクトルを検索するfind()と、次のコードは適切な参照を返しますか? 検索でベクター内に目的の値が見つかった場合、その値への参照が返されます。そうでない場合は、値を最後にプッシュし、新しい値への参照を返す必要があります。
わかりません。a.back()定義による参照であるため、返すことは問題ありません。i私が確信が持てないことが見つかった場合、イテレータを逆参照しています。
 int& foo(int i)
 {
     std::vector<int>::iterator found = find(a.begin(), a.end(), i);
     if (found != a.end())
     {
        return *found;
     } else {
        a.push_back(i);
        return a.back();
     }
 }
わかりません。a.back()定義による参照であるため、返すことは問題ありません。i私が確信が持てないことが見つかった場合、イテレータを逆参照しています。おそらく明らかなように、全体のポイントは、関数を左辺値として機能させることです。確かにコンパイルされますが、正しいかどうかはわかりません。