I am looking for the best data structure for C++ in which insertion and deletion can take place very efficiently and fast.
Traversal should also be very easy for this data structure. Which one should i go with? What about SET in C++??
I am looking for the best data structure for C++ in which insertion and deletion can take place very efficiently and fast.
Traversal should also be very easy for this data structure. Which one should i go with? What about SET in C++??
这取决于您要放入此数据结构中的内容。如果项目是无序的或者你关心它们的顺序,可以使用 list<>。如果您希望它们按排序顺序排列,则 set<> 或 multiset<> (后者允许多个相同的元素)可能是另一种选择。
list<> 通常是一个双链表,所以插入和删除可以在恒定时间内完成,只要你知道位置。遍历所有元素也很快,但访问指定元素(按值或按位置)可能会变慢。
set<> 及其家族通常是二叉树,因此插入、删除和搜索元素大多是在对数时间内(当您知道在哪里插入/删除时,它是常数时间)。遍历所有元素也很快。
(注意:boost 和 C++11 都有基于哈希表的数据结构,这也是一个选项)
我会说一个链接列表,具体取决于您的删除是否是具体的和经常的。关于它的迭代器。