因此,我试图将二进制文件加载到Vector中,以便像缓冲区一样使用它。
ifstream binaryFile;
vector<unsigned char> fileBuffer(istreambuf_iterator<char>(binaryFile), {});
vector<unsigned char>::iterator fileIter = fileBuffer.begin();
现在我的问题是,如果我使用
fileIter
变量,是否可以访问fileBuffer
vector 中的所有元素?我想知道,因为我只需要在某些位置编辑
fileBuffer
的内容,这就是为什么我首先使用迭代器的原因。简化了,我想知道是否可以编辑 vector
fileBuffer
中的元素,如果我用类似以下代码的fileIter
编辑*(fileIter + 2) = 'a';
我已经研究了该主题,但尚未找到答案。
最佳答案
标准类模板std::vector具有随机访问迭代器。因此,您可以像使用指针一样使用它。例如
fileIter[10] = 'A';
要么
fileIter += 10;
等等。
这是一个演示程序。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v = { 1, 2, 3, 4, 5 };
for ( const auto &item : v ) std::cout << item << ' ';
std::cout << '\n';
auto it = v.begin();
it[1] = -it[1];
for ( const auto &item : v ) std::cout << item << ' ';
std::cout << '\n';
it += 2;
*it *= 10;
for ( const auto &item : v ) std::cout << item << ' ';
std::cout << '\n';
return 0;
}
它的输出是
1 2 3 4 5
1 -2 3 4 5
1 -2 30 4 5
关于c++ - vector::iterator也可以用作 vector 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60649931/