VC6.0 winXp
以下のようにファイルからデータを読み込むためのバッファを
vectorで代用することは可能でしょうか?。
サンプルコードを書いて試したところちゃんと動いたのですが、
2つ気になることがあり、質問させていただきました。
よろしくお願いいたします。
<気になること>
1) vectorは配列のようにメモリがいつも連続していると考えてよいのでしょうか?
2) メモリが連続している場合、先頭位置を得るためにvector::begin()をキャストして
も問題ないでしょうか?
<試したこと(イメージ)>
std::vector<unsigned char> buf;
CFile file;
if (file.Open(XXXX, CFile::modeRead)) {
TRY {
buf.resize(file.GetLength());
file.Read(buf.begin(), file.GetLength());
-snip-
> 1) vectorは配列のようにメモリがいつも連続していると考えてよいのでしょうか?
よい。
> 2) メモリが連続している場合、先頭位置を得るためにvector::begin()をキャストし
ても問題ないでしょうか?
だめ。 &buff[0] を使うべし。
> だめ。 &buff[0] を使うべし
イテレータをポインタとして扱うのはだめなのですね
operaotor[]を調べたところ参照を返していました。
#考えてみればとても真っ当ですね。(いわれないと気づけない)
なので、&buff[0]でスッキリと理解することができました。
επιστημη さんありがとうございました。