什么你问是不会std::list::iterator做束缚检查.答案是否定的,但事实并非如此.这意味着迭代器比其他方式更快.如果你想要绑定检查,那么你可以用你自己的绑定检查迭代器包装器来包装迭代器.
但是如果你在使用迭代器时遵循约定,那么在编译时你总是会知道迭代器是无效的,即指向无效位置.例如:
std::list然后确保存储迭代器erase()返回以获取指向新有效位置的有效迭代器,就在擦除元素之外.std::remove()确保存储返回的迭代器,以便了解容器的新边界.这种方法将边界检查问题移到了一边,同时保留了迭代器的性能,这些迭代器不需要费心去确保用户不会在脚下射击.
| 归档时间: |
|
| 查看次数: |
4156 次 |
| 最近记录: |