我在容器中有一堆字符串。这些字符串在容器中必须是唯一的,但我想保留顺序或字符串(它们的添加顺序)。
对于这个比使用向量并在每次添加操作之前测试是否元素已经在向量中有更优雅的解决方案,例如通过使用std :: find from?由于其独特性,我很想使用一个集合,但是如何保留字符串添加到集合的顺序呢?
答案 0 :(得分:3)
如果你要编写自己的容器,那么经典方法(参见Java中的LinkedHashSet
)将是添加到树/哈希表中的元素之间的链表;如果你可以控制树节点(你可以将prev / next指针直接存储在它们中),这个效果特别好。
这可以使用STL(存储一些struct
类似
struct Elem
{
std::string payload;
std::set<Elem>::iterator prev;
std::set<Elem>::iterator next;
}
),但更简单的方法可能是使用集合加上迭代器向量集合,也可以封装在某个类中以一致地处理删除。该集将处理存储和唯一性,向量将记住插入顺序。