たとえば、他の情報なしで次の関数を実装する方法は?
bool isEnd(set<int> :: iterator itr);
このようにできることはわかっていますが、入力変数「s」なしでそれを行うにはどうすればよいですか?
bool isEnd(const set<int> &s, set<int> :: iterator itr) {
return itr == s.end();
}
そうしない。
範囲は 2 つの反復子であり、反復子を移動するときはほとんどの場合、範囲で作業する必要があります。
コンテナも範囲なので、代わりにコンテナを持ち運ぶことができますが、通常は完全なコンテナは必要ありません。
標準 C++ ライブラリでは、それを記述する方法はありません。
std::set
たとえばred-black treesとして実装でき、イテレータは内部のノードであり、そのノードが最後かどうかを判断するにはツリー全体が必要です。