私の質問はMaya C++ APIの例を参照していますが、それが Maya に固有のものなのか、それとも一般的な C++ イディオムなのか疑問に思っています。
Maya API にはMSelectionList
、シーン内のオブジェクトを表すコンテナである というオブジェクトがあります。MItSelectionList
インスタンスのイテレータであるコンパニオンもありMSelectionList
ます。
これで、イテレーターの利点は、オブジェクトを適切にループする方法を知ることであることがわかりましたが、この場合、インデックスを提供することを除いMSelectionList
て.length()
、イテレーターと同じメソッドと同じゲッターがあります。
例...
MSelectionList activeList;
MGlobal::activeSelectionList(activeList);
unsigned int length = activeList.length();
for (unsigned int i=0 ; i < length; i++ ) {
MDagPath item;
iter.getDagPath(i, item);
}
MSelectionList activeList;
MGlobal::activeSelectionList(activeList);
MItSelectionList iter( activeList );
for ( ; !iter.isDone(); iter.next() ) {
MDagPath item;
iter.getDagPath(item);
}
イテレータが通常の選択オブジェクトに対して提供する唯一の機能は、フィルタ タイプを設定する機能です。これにより、フィルタに一致するオブジェクトのみが返されます。最初の例では、これと同じテストを明示的に実行できますが。
私の質問は、イテレータと元のオブジェクトの間の機能にこのような重複がある場合、イテレータの利点は何でしょうか? これは単なる Maya 固有の設計上の決定ですか、それとも、ここでは理解できない特別な理由で常にイテレータを作成するのが一般的な C++ のイディオムですか。