12

例如,如何在没有任何其他信息的情况下实现以下功能?

bool isEnd(set<int> :: iterator itr);

我知道我可以这样做,但是如何在没有输入变量“s”的情况下做到这一点?

bool isEnd(const set<int> &s, set<int> :: iterator itr) {
    return itr == s.end();
}
4

2 回答 2

8

你不。

一个范围是两个迭代器,当你移动迭代器时,你应该几乎总是在一个范围上工作。

容器也是范围,因此您可以随身携带容器,但通常不需要完整的容器。

于 2013-09-01T05:30:09.823 回答
7

使用标准 C++ 库,没有办法编写它。

std::set可以实现为例如红黑树,然后迭代器是内部的节点,您需要整个树来确定该节点是否是最后一个。

于 2013-09-01T04:17:52.943 回答