我正尝试使用C++11特性实现一个哈希类。由于这是一项学校作业,所以我没有重用STL的哈希函数。我的目标是:
for(auto &h : {H1[hash_func(n1, val)], H2[hash_func(n2, val)]}) {
for(auto &x : h) {
if(x == val) {
swap(x, h.back());
h.pop_back();
}
}
}
H1
和H2
是vector<T>*
类型。当我尝试编译时,我得到了一个令人讨厌的语法错误,我甚至无法理解。如果我尝试for(auto &h : {H1, H2})
并使用h[hash_func(n1, val)]
而不是h
,它会工作(尽管显然是错误的)。如何修复这个问题?(或者至少以比写两遍相同的东西更优雅的方式实现它)
std::vector<int>* v1 = new std::vector<int>[2]{{1, 2}, {3, 4}};
- OGHstd::vector
数组分配内存并初始化数组中的向量。 - awesoonstatic
,只需声明一个向量数组即可。你也不会使用int* i = new int[2];
来代替int i[2];
,对吧? - Konrad Rudolph