迭代std :: string元素

时间:2010-06-21 18:29:14

标签: c++ string

将迭代器移动到以下字符串元素需要花费不变的时间:

std::string str // string of size 100 MB
std::string::iterator iter = str.begin();
std::advance(iter, str.size()-1);

按索引搜索会花费不变时间吗?

char c = str[str.size()-1];

2 个答案:

答案 0 :(得分:3)

是的,这是正确的。这是由C ++标准(§24.3,迭代器操作)保证的:

  

因为只能随机访问迭代器   提供+和 - 运算符,库   提供两个功能模板   提前和距离。这些功能   模板使用+和 - 随机   访问迭代器(因此,   他们不变的时间);

答案 1 :(得分:0)

为什么你会使用顶级代码而不是str.end() - 1?

编辑:或str.back(),这是更容易通用的。