Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
構造体がある場合
struct three { char a,b,c; };
そして、コンパイラ プラグマを使用して sizeof three が 3 であることを確認します。これがあればvector<three> 、要素間にギャップが挿入されないことが保証されますか? 別名、 vec.data() 次のようにはなりません:
vector<three>
vec.data()
abc_abc_abc_abc_abc_ (_は空欄)
これは、「連続ストレージ」条件によって保証されます。それ以前の実装ではすでに一般的でしたが、C++03 で標準に追加されました。0 <= n < vec.size()、 、という趣旨の言葉を言います&vec[n] == &vec[0] + n。
0 <= n < vec.size()
&vec[n] == &vec[0] + n
&vec[0]タイプがであるためT*、これは、連続する要素間のバイト数の差が に等しい場合にのみ有効sizeof(T)です。
&vec[0]
T*
sizeof(T)