我需要一个 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()
. 我可能是错的,但这是我对集合排序如何工作的理解。
如果我使用 a ,我可以通过在插入每个新项目后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);
}
是否有更好的容器/解决方案满足我的特殊需求?