掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
vector の最後の要素+1 へのポインタは取っていい? (ID:73307)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
単純配列 int a[4]; に対して a+4 が valid であることは保証されていますが std::vector<T> v(4); に対して v+4 (に相当するポインタ) は valid なんでしたっけ? (もちろん [ポインタ値] をとるだけで dereference しない前提) ISO/IEC 14882:1998 を探した範囲では 23.1.1 で 「at() は n>=v.size() で例外を投げる」 としか書いてないのでなんとも判断がつきかねます。 C++11 で追補とかでてましたっけ? もともと char a[] の要素を char* でぐりぐりまわすコードがあって 可変長になったので char[] を vector に変えたら &v[v.size()] で VC++ 2005/2010 は例外投げてくれるので困っております。 _SECURE_SCL や _HAS_ITERATOR_DEBUGGING で回避できるのはわかってますが そもそも前提として &v[v.size()] を計算してよいのかどうか保証が欲しい。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.