- 我可以通过某个成员将迭代器设置为字符串中的第 5 位,还是我必须这样做
for(i = 0; i < 5; ++i) iterator++;
? - 给定一个迭代器,如何将其转换为字符串中的数字偏移量?
- 如果 std::iterators 无法做到这一点,可以提升吗?
迭代器 <-> 偏移量
我可以通过某个成员将迭代器设置为字符串中的第 5 位吗
您可以使用std::advance
std::advance(iterator, 5);
或者
iterator += 5;
给定一个迭代器,如何将其转换为字符串中的数字偏移量?
您可以使用std::distance
std::distance(string.begin(), iterator);
或者
iterator - string.begin()
std::string 迭代器是随机访问迭代器,它定义了 + 运算符。您可以使用begin(str) + 5
. 偏移量可以通过std::distance
使用 -operator 来计算随机访问迭代器。
iterator + 4
iterator - str.begin();
+
and -
; 您可以使用它们在迭代器和偏移量之间进行转换。