这是我考试的一个问题,答案是所有指针都是迭代器,但并非所有迭代器都是指针.为什么会这样?
在如下声明中:
int *p = new int(4);
Run Code Online (Sandbox Code Playgroud)
如何将p视为迭代器?
Bau*_*gen 10
"Iterator"是一些抽象概念,描述了一种类型必须支持某些特定语义的操作.
指针是迭代器,因为它们满足概念迭代器(以及更强大的随机访问迭代器),例如operator++移动到下一个元素并operator *访问底层元素.
在您的特定示例中,您将获得标准迭代器范围
[p, p+1)
Run Code Online (Sandbox Code Playgroud)
例如,可以在标准算法中使用它,就像任何迭代器对一样.(它可能不是特别有用,但它仍然有效.)以上适用于所有"有效"指针,即指向某个对象的指针.
然而,相反的含义是错误的:例如,考虑一下std::list<T>::iterator.那仍然是一个迭代器,但它不能是指针,因为它没有operator[].
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |