gaa*_*kam 2 c++ iterator undefined-behavior
我的意思是,写这样的东西是否有效:
std::vector<int> vec(100, 0);
auto it = std::find(vec.end(), vec.end(), 5);
Run Code Online (Sandbox Code Playgroud)
为it保证是vec.end()或这是某种UB的?
如果允许这种结构,它将为我节省一些案例.
一对迭代器,例如vec.end(), vec.end()一个空范围,但它仍然是一个有效的范围.您可以在空范围内调用函数.向算法函数提供有效范围不会调用未定义的行为.如可能的实现中所述,该std::find函数将简单地跳过此部分:
for (; first != last; ++first) {
if (!q(*first)) {
return first;
}
}
Run Code Online (Sandbox Code Playgroud)
并返回last迭代器:
return last;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |