と仮定は、以下のタイプの連続した配列をソートする必要がある。そう、コンパレータを書くための最良の方法は何どのように関連するオブジェクトをカスケードするソートコンパレータを実装するのですか?
{i, p, v}
----------
{a, "", 1}
{b, "", 2}
{c, "", 3}
{dc, c, 4}
{ea, a, 5}
{fb, b, 6}
:前述のoperator<
で
struct X
{
string id, parent_id;
int value;
bool operator< (const X& x) const { return value < x.value; }
};
、それは以下のソートされた配列を作成します
{i, p, v}
----------
{c, "", 3} // grouping of 'c'
{dc, c, 4}
{a, "", 1} // grouping of 'a'
{ea, a, 5}
{b, "", 2} // grouping of 'b'
{fb, b, 6}
表示されるように、配列は特にがソートされていますはグループ番号&を作成し、次に低い値から高い値に基づいて配列が整理されます。つまり、最新の従属オブジェクト(X
、空でないオブジェクトはparent_id
)がキープレーヤーです。残っている親は彼らに引っ張られます。
私の努力:これを行うための自然な方法は次のとおりです。
parent_id
のための最高のvalue
- ルックのための、つまり、逆/下から前述のコンパレータと
- 反復をソート実行します要素
x
;有効な場合:ちょうど上記x
- が再帰的に
parent_id
まで、ステップ3を実行parent_id
ため- 検索 は、コピー&消去、その要素
- 挿入
質問が見つかりません。これは簡単な方法で達成できますか?
注::この問題はC++に固有の問題ではありません。
お返事ありがとうございます。それが実用的な例の形で言及されていれば、より有益でした。また、 'string'の比較もできませんでした。それにもかかわらず、私は解決策を見つけて答えを更新しました。 – iammilind