次のことができるSTLコンテナが必要です。
1)ユニークなアイテムのみを保存する
2)アイテムがコンテナに追加された時期に基づいて注文が保証されている
したがって、アイテムA、B、Cをこの順序でコンテナに追加すると、
Aは常に次の方法でアクセスできます:myItems().begin()
またはmyItems[0]
Bは常に次の方法でアクセスできます:
myItems.begin() + 1
またはmyItems[1]
Cは常に次の方法でアクセスできます:
myItems.begin() + 2
またはmyItems[2]
私は現在、unordered_set
ニーズ#2を満たさないを使用しています。通常set
のを使用する場合、注文に小なり関数を指定できますが、新しいアイテムがコンテナに追加されると、注文が変更される場合があります。
通常set
のを使用して、A未満の新しいアイテムDを挿入すると、からAにアクセスできなくなりますmyItems.begin()
。私は間違っている可能性がありますが、それはセットの順序付けがどのように機能するかについての私の理解です。
を使用する場合、すべての新しいアイテムを挿入した後list
に呼び出すことで、独自の側面を適用できます。list::unique()
myList.sort();
myList.unique();
std::find
または、リストまたはベクトルで使用して、独自の側面を手動で適用することもできます。
iter = std::find(myList.begin(), myList.end(), item);
//Only add item if not already in list/vector...
if(iter == myList.end())
{
myList.push_back(item);
}
私の特定のニーズに適したより良いコンテナ/ソリューションはありますか?