在"Effective STL"提示16中,它表示我们应该避免将迭代器传递给接受指针的函数.有人可以帮我解释一下细节吗?
void doSomething(const int* pInts, size_t numInts);
vector<int> v;
...
doSomething(&v[0],v.size()) //correct
doSomething(v.begin(),v.size()) //incorrect
Run Code Online (Sandbox Code Playgroud)
Che*_*Alf 11
在标准库的一些早期实现中,迭代器被实现为指针.
当迭代器变为非指针时,依赖于该属性的代码停止工作.
所以,你不应该传递一个预期指针的迭代器,因为如果它编译那么它只是偶然的机会.迭代器不一定是指针.如果它是一个指针,那么它可能不一定是某个更高版本(库,编译器等)的指针.
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |