Readバッファにvectorはつかえるのでしょうか? – プログラミング – Home

Readバッファにvectorはつかえ...
 
通知
すべてクリア

[解決済] Readバッファにvectorはつかえるのでしょうか?


2リットル
 2リットル
(@2リットル)
ゲスト
結合: 18年前
投稿: 9
Topic starter  

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-


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

> 1) vectorは配列のようにメモリがいつも連続していると考えてよいのでしょうか?

よい。

> 2) メモリが連続している場合、先頭位置を得るためにvector::begin()をキャストし
ても問題ないでしょうか?

だめ。 &buff[0] を使うべし。


返信引用
2リットル
 2リットル
(@2リットル)
ゲスト
結合: 18年前
投稿: 9
Topic starter  

> だめ。 &buff[0] を使うべし
イテレータをポインタとして扱うのはだめなのですね

operaotor[]を調べたところ参照を返していました。
#考えてみればとても真っ当ですね。(いわれないと気づけない)
なので、&buff[0]でスッキリと理解することができました。

επιστημη さんありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました