13

事前に作成したセットを並べ替えることができるかどうか知りたいのですが。セットs_p2を最初に作成するときは、別の要素point.getLength()を使用して並べ替えます。しかし、ユーザー入力の後、x値point.getX()に従ってアイテムをソートしたいと思います。どうすればいいですか?

セットコンテナにはソート機能がないようです。そして、私はベクトルを使用することをお勧めします。ただし、セットは一意の要素のみを格納できます。

Q1:基準に応じてセットを並べ替えるにはどうすればよいですか?

Q2:setがこれを実行できない場合、どのSTLコンテナーが最良の選択であり、コンテナー内の要素をどのようにソートできますか。

4

3 に答える 3

18

に頼ることはできません。setソート方法は、特定の のタイプの一部ですset。与えられたsetには、変更できない固定のセット順序があります。

set同じデータで比較的簡単に新しいものを作成できます。set新しい基準に基づいてソートする新しいものを作成するだけです。

同じコードで2 つの を使用する場合はset、基になる へのアクセスを抽象化する必要がありますset

現在、まれに読み取りや変更を行っている場合は、vector手動でソートする を使用することをお勧めします。std::unique-eraseイディオムを使用して、重複を削除できます。

于 2012-11-14T18:57:41.380 に答える
9

std::setメンバーを並べ替えて保存します。.begin()からまでのセットをウォークスルーする.end()と、アイテムのソートされたリストが表示されます。

デフォルトの並べ替え条件が気に入らない場合は、2番目のテンプレートパラメータを次のように指定できます。std::set<>

于 2012-11-14T18:54:33.503 に答える