掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
vector の最後の要素+1 へのポインタは取っていい? (ID:73312)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
a+N が1つ先を指せるという規定は 5.7 Additive operators にあり、 8.3.4 Arrays にも 8.3.1 Pointers にも記述がないわけで その意味で 23 containers や 23.2.4 template class vector に記述がないのは ある意味当たり前なような気がしてきたっす。 > N3376 これは正式採択版規格書では 23.2.4 (vector) の 1 に対する補足として 1998 版に無かった記述が 2003 版に追加されている 代物なわけですが、虚心坦懐にこの文言を読む限りにおいてだと n==v.size() のときは保証外ということになるのでは? 使っちゃダメという根拠にはなってもつかっていい根拠にならないです。 3回転半ひねりを加えて邪悪にこの文言を読むと ・ vector の要素の列が a[N] と同等としてよい ・ &v[0] は iterator ではなくて単にポインタ右辺値である ・ポインタと整数の加減算において1つ先は指すことが認められている となり &v[0]+v.size() は問題ないことになりますが・・・ &v[0]+v.size() が問題なくても &v[v.size()] の保証は依然無いことになりますけど。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.