\n\n\nstd::string::iterator 有一个偏移访问运算符(运算符[]),但它存在于某些人定义为未定义行为的类别中,例如 it + 3。
\n
我不明白这个说法。没有这样的类别。std::basic_string<>::iterator是一个随机访问迭代器,因此您可以通过仅向其添加或减去偏移量来进行查找(这与您链接到的文档一致):
auto new_it = it + offset;\nRun Code Online (Sandbox Code Playgroud)\n\nxe2\x80\x99s 未定义的是在end()关联容器的迭代器之后或在其开始之前寻找。也就是说,以下是未定义的行为:
std::string str = "hi";\nauto it1 = str.begin() + 2; // OK.\nassert(it1 == str.end());\nauto it2 = str.begin() + 3; // UB!\n// At this point we cannot assert anything about it2\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10467 次 |
| 最近记录: |