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)
个字节。
字符串大小不固定。他们如何让迭代器知道增量后指向哪里?
#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)
个字节。