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

そうしない。

範囲は 2 つの反復子であり、反復子を移動するときはほとんどの場合、範囲で作業する必要があります。

コンテナも範囲なので、代わりにコンテナを持ち運ぶことができますが、通常は完全なコンテナは必要ありません。

于 2013-09-01T05:30:09.823 に答える
7

標準 C++ ライブラリでは、それを記述する方法はありません。

std::setたとえばred-black treesとして実装でき、イテレータは内部のノードであり、そのノードが最後かどうかを判断するにはツリー全体が必要です。

于 2013-09-01T04:17:52.943 に答える