C++ 0x正在引入unordered_set,可以在boost许多其他地方使用.我理解的是unordered_set具有O(1)查找复杂性的哈希表.另一方面,set只是具有log(n)查找复杂性的树.为什么人们会使用set而不是unordered_set?即是否需要set了?
我可以在C++中创建一个无序的向量集吗?这样的事情
std::unordered_set<std::vector<int>> s1;
Run Code Online (Sandbox Code Playgroud)
因为我知道std lib的"set"类是可能的,但似乎它不适用于无序版本谢谢
更新:这是我正在尝试使用的确切代码
typedef int CustomerId;
typedef std::vector<CustomerId> Route;
typedef std::unordered_set<Route> Plan;
// ... in the main
Route r1 = { 4, 5, 2, 10 };
Route r2 = { 1, 3, 8 , 6 };
Route r3 = { 9, 7 };
Plan p = { r1, r2 };
Run Code Online (Sandbox Code Playgroud)
如果我使用set,它可以,但在尝试使用无序版本时收到编译错误
main.cpp:46:11: error: non-aggregate type 'Route' (aka 'vector<CustomerId>') cannot be initialized with an initializer list
Route r3 = { 9, 7 };
Run Code Online (Sandbox Code Playgroud) 我有一套指针.在第一步中,我插入数据指针,在第二步中,我遍历整个集合并对元素执行某些操作.顺序并不重要,我只需要避免重复,这与指针比较工作正常.
我的问题是,为同一目的使用无序集是否有利.对于无序集合,插入速度更快吗?
c++ ×3
c++11 ×2
algorithm ×1
collections ×1
hashmap ×1
hashtable ×1
java ×1
performance ×1
set ×1
vector ×1