const_iterator 的 ++ 运算符如何在 C++ 标准库中用于 vector<string>?

How the ++ operator of the const_iterator works for vector<string> in C++ standard library?

字符串大小不固定。他们如何让迭代器知道增量后指向哪里?

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
  vector<string> myVector{"ABC", "DEF"};

  for (auto p = myVector.begin(); p != myVector.end(); ++p)
    cout << *p << endl;
}

事实上,sizeof(std::string) 固定的。实际的字符串数据(不是固定大小的)存储在内存中的其他地方,std::string 对象只包含一个指向它的指针。

因此 std::vector<std::string> 上的迭代器一次可以简单地前进 sizeof(std::string) 个字节。