vector::iterator 也可以用作向量吗

Can a vector::iterator also function as a vector

所以我试图将二进制文件加载到 Vector 中,这样我就可以像使用 Buffer 一样使用它。

ifstream binaryFile;
vector<unsigned char> fileBuffer(istreambuf_iterator<char>(binaryFile), {});
vector<unsigned char>::iterator fileIter = fileBuffer.begin();

现在我的问题是,如果我使用 fileIter 变量,我可以访问 fileBuffer 向量中的所有元素吗?
我想知道,因为我只需要在某些位置编辑 fileBuffer 的内容,这就是我首先使用迭代器的原因。

简而言之,我想知道向量 fileBuffer 的内容是否会根据对 fileIter 的编辑进行更改,代码如下 *(fileIter + 2) = 'a';

我已经研究过这个话题,但我还没有找到答案。

标准 class 模板 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