ken*_*ytm 10
它的作用只是因为没有界限检查operator[],出于性能原因.这样做会导致未定义的行为.如果您使用更安全v_strMyVector.at(i),它将抛出OutOfRange异常.
这是因为operator[]返回引用.
由于vectors可以在O(1)时间内随机访问,因此通过索引或迭代器循环不会产生任何性能差异.
迭代器允许您编写独立于容器的算法.这个迭代器模式在<algorithm>库中使用很多,以便更容易编写通用代码,例如,不需要为每个M容器需要N个成员(即编写M*N个函数)
std::vector<T>::find(x)
std::list<T>::find(x)
std::deque<T>::find(x)
...
std::vector<T>::count(x)
std::list<T>::count(x)
std::deque<T>::count(x)
...
Run Code Online (Sandbox Code Playgroud)
我们只需要N个模板
find(iter_begin, iter_end, x);
count(iter_begin, iter_end, x);
...
Run Code Online (Sandbox Code Playgroud)
并且每个M容器都提供迭代器,减少了仅M + N所需的函数数量.
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |