昨日私は以下のように頼んだquestion、便宜のためにここに再現しました。C++で再帰型定義をエミュレートするにはどうすればよいですか?
「私は本当にこの(最低限にそれを簡素化)してやりたい私のプロジェクトの1つを、
struct Move
{
int src;
int dst;
};
struct MoveTree
{
Move move;
std::vector<MoveTree> variation;
};
私はそれを行うことは可能ではないであろうことを想定していることを認めなければなりませんこれは直接MoveTree内のMoveTreeのベクトルが動いていると思っていましたが、とにかく試してみましたが、きれいに動作していますMicrosoft Visual Studio 2010 Expressを使用しています
これは移植可能ですか?私は心配することがありますか? "
コミュニティからの回答は、いいえ、できませんでした。標準では禁止されているため、実際には機能しているということは、ただ運が良かったことを意味します。
私の新しい質問はです。どのようにして、法的なC++で必要とするシンプルな機能を実装することができますか?
[recursive_wrapper](http://www.boost.org/doc/libs/1_46_0/doc/html/boost/recursive_wrapper.html)も使用できますが、これは 'vector'と一緒に使用すると非効率的ですが、ヒープトラフィックが多いためです。 –
なぜ@ Johannesの回答を削除しましたか?@Cat Plus Plusとは異なるアプローチですが、いくつかのメリットとデメリットがあります。ベクタへの参照を提供し、ユーザーコードをそのまま使用する利点は、ベクターの成長にかかる処理コストが高くなることです。 –
@David私はrecursive_wrapperがここで使うのは良くないと感じているからです.- –