標準ライブラリ関数を使用して値のベクトルを検索する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
私が確信が持てないことが見つかった場合、イテレータを逆参照しています。おそらく明らかなように、全体のポイントは、関数を左辺値として機能させることです。確かにコンパイルされますが、正しいかどうかはわかりません。