我想知道哪一个更快 哈希表或向量。
如果我想查看内部所有信息的循环并将其与我当前的数据进行比较, 如果它已经在里面,我想打破我的循环。
示例:
我有[{1,2},{1,2,3}]并且在循环中我当前的新数据是{1,2}(它在我的向量或我的哈希表中),所以我会打破我的循环如果我有{2,1}我也会打破它。
如果所有元素都匹配,无论顺序如何,否则我会继续循环。如果哈希表速度快得多,我是否可以提示如何实现它,因为我是C ++的新手
答案 0 :(得分:0)
Hashtable可以更好地工作,因为您可以创建键值对。唯一的条件是你不应该有多个密钥相同的组合。所以你不能在表中有3,1和3,2因为密钥是唯一的。
如果你在lhs上有重复项,那么最好使用vector。
答案 1 :(得分:0)
我使用的是嵌套集,即std::set<std::set<int> >
。
#include <set>
#include <cassert>
typedef std::set<int> Entry;
typedef std::set<Entry> Table;
int main () {
int e1[] = {1,2};
int e2[] = {1,2,3};
int e3[] = {2,1};
int e4[] = {3,2};
Table t;
t.insert(Entry(e1, e1+2));
t.insert(Entry(e2, e2+3));
Table::iterator it;
Table::iterator end = t.end();;
// Search for 1,2
it = t.find(Entry(e1, e1+2));
// Should find it
assert(it != end);
// Search for 2,1
it = t.find(Entry(e3, e3+2));
// Should find it
assert(it != end);
// Search for 3,2
it = t.find(Entry(e4, e4+2));
// Should NOT find it
assert(it == end);
}