指针是双向迭代器
pointers are bi directional iterators?
我偶然发现了我完全困惑的东西。
std::reverse()
将双向迭代器作为参数作为函数,但是当我将指针传递到函数时,它似乎可以正常工作并实际上反向字符串。
void reverseFour(char* str) {
reverse(str, str + strlen(str));
}
int main {
char *str = "hello";
str += '/0';
reverseFour(str);
}
那么,我的问题是,这怎么可能?双向迭代器不是指针,对吗?
实际上,指针是一种随机访问器。这甚至比双向学位符甚至更好,因为任何需要BidirectionalIterator
的算法也将接受RandomAccessIterator
,包括指针。
这是非常有意的,而且非常有用。
当然确实存在其他类型的迭代器,尤其是某些专门用于迭代器的类型,仅此而已(例如,您会从std::set
和std::map
中获得这些类型(。但是Iterator
的概念是C 故意保持一般性的。
相关文章:
- std::vector::迭代器是否可以合法地作为指针
- 不明白迭代器,引用和指针失效,一个例子
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 在C++中释放内存期间,迭代器与指针有何不同
- 迭代器的指针操作问题
- 对于随机访问迭代器(矢量迭代器),迭代器C++样式指针吗?
- 专门C++使用指针值类型的通用迭代器的模板函数?
- 从 std::vector 迭代器中执行函数指针
- 使用 map<char,strring> 的迭代器返回指针 map<char,strring>*
- 迭代器是否分配内存(如指针)?
- 如何在C++中重新实现包含指针的 STL 容器的类的迭代器
- 向量<pointer>:插入(迭代器,指针)插入垃圾值
- 迭代器可以变成指针吗?
- 使用迭代器指针 (C++) 从对象指针列表中删除元素
- 迭代器指针不引用第一个元素
- "strong"迭代器指针/引用
- c++ 如何将迭代器指针传递给通过引用需要对象的函数
- 泛型迭代器/指针初始化
- 断言模板实参是一个迭代器/指针
- 将输入迭代器(指针)复制到vector