C ++ベクトルの最後の要素への通常のポインター(イテレーターではない)を取得するためのよりきれいな構文があるかどうか疑問に思っています
std::vector<int> vec;
int* ptrToLastOne = &(*(vec.end() - 1)) ;
// the other way I could see was
int* ptrToLastOne2 = &vec[ vec.size()-1 ] ;
しかし、これらは両方ともあまり見栄えがよくありません!
int* ptrToLastOne = &vec.back(); // precondition: !vec.empty()
int* ptrToLast = &(vec.back()); // Assuming the vector is not empty.
その他のオプション:
int* ptrToLast = &*vec.rbegin();
また
int* ptrToLast = &*boost::prev(vec.end());
これほど美しいものはありませんが、内部で同じことを行うテンプレート化されたヘルパー関数を作成できます。この方法では、少なくとも呼び出しサイトがよりきれいに見え、タイプミスによるエラーを植え付ける可能性が低くなります。
非常によく似た質問に対する受け入れられた回答と、解決策がどのように見えるかを参照してください。