こんにちは、次のコードが機能しない理由を理解しようとしています。std::copy アルゴリズムへの入力イテレータ型としてポインタを使用しようとしています。fsRead.Buffer はコピーするデータの先頭を指し、fsRead.BufferSize はコピーするデータのサイズです。
// AllocateZeroPool(UINT64) takes an input size, and returns a pointer to allocated memory. (this is the existing C api)
fsRead.Buffer = static_cast<UINT8*>(AllocateZeroPool(fsRead.BufferSize));
//
// this next line populates the data into fsRead.Buffer
auto status = mFs->read_data(nullptr, &fsRead);
the type of file.data is: std::vector<UINT8>
std::copy(fsRead.Buffer, fsRead.Buffer + fsRead.BufferSize, file.data.begin());
file.data.size() は、上記の std::copy() 呼び出しでゼロです。
ベクター file.data にデータを取得するために、現在、手動でコピーを行っています。
for(auto i(0U); i < fsRead.BufferSize; ++i) {
file.mBinaryData.emplace_back(fsRead.Buffer[i]);
}
入力反復子として 2 つのポインターを使用しても機能しないように見えるのはなぜですか?
編集:明確にするために、実際にはデータが file.mBinaryData ベクトルにコピーされないことを意味します。