gpt4 book ai didi

c++ - 所有指针都被认为是迭代器吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:21 24 4
gpt4 key购买 nike

这是我考试的一道题,答案是所有指针都是迭代器,但并非所有迭代器都是指针。为什么会这样?

在这样的声明中:

int *p = new int(4);

p 怎么能被认为是一个迭代器呢?

最佳答案

“迭代器”是一些抽象概念,描述了一个类型必须支持的具有特定语义的一组特定操作。

指针是迭代器,因为它们满足 iterator 的概念(而且,更强大的是 random access iterator ),例如operator++移动到下一个元素和 operator *访问底层元素。

在您的特定示例中,您将获得一个标准的迭代器范围

[p, p+1)

可以在标准算法中使用,就像任何迭代器对一样。 (它可能不是特别有用,但它仍然有效。)以上内容适用于所有“有效”指针,即指向某个对象的指针。

然而,相反的含义是错误的:例如,考虑 std::list<T>::iterator .那仍然是一个迭代器,但它不能是一个指针,因为它没有 operator[]。 .

关于c++ - 所有指针都被认为是迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41194977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com