【发布时间】:2019-12-05 22:17:01
【问题描述】:
迭代器定义说 [1]:
Iterator 是一个对象,它使程序员能够遍历容器它也说各种类型的迭代器通常通过容器的接口提供。
Cplusplus.com 有一个大表,其中每个容器都有成员作为迭代器类别函数。
这是否意味着每个容器类都有实现基迭代器类的迭代器类和该迭代器类中的各种函数,这些函数将实例化并与该容器类一起工作以遵循接口。
我的问题是一个类如何允许另一个类拥有接口?
【问题讨论】:
-
“实现基迭代器类的迭代器类” 迭代器不必从任何类继承。 (有一个已弃用的
std::iterator,但从它继承是可选的。)“一个类如何允许另一个类拥有接口?”你是什么意思? -
@HolyBlackCat 是的,请不要使用 interface 关键字。
-
@HolyBlackCat in wikipedia "各种类型的迭代器通常通过容器的接口提供"这个接口在这里的含义。
-
@ParsuramKailasa 在这里,en.cppreference.com/w/cpp/named_req/Iterator。这个页面有最低要求,有链接到描述更复杂的迭代器要求的页面。请注意,这些要求不是通常的 OO 意义上的接口。他们只是记录了涉及迭代器的表达式的预期行为。因此,只要您的类支持所需的操作,您就可以以任何您喜欢的方式实现迭代器。