我想實現一個使用C++ 11功能的哈希類。我不會重複使用stl的哈希,因爲這是一個學校作業。我試圖做到這一點:C++ 11範圍超過「元組」
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
,它可以工作(雖然它顯然是錯誤的)。我怎樣才能解決這個問題? (或者至少以比同樣的東西更優雅的方式實現它兩次)
[外貌](http://liveworkspace.org/code/3IrjlE$0)爲我好,只有一個 - 你不能更改braced-init-lists中的值。 – soon 2013-04-07 09:29:04
@soon,請你向我解釋一下這行代碼是幹什麼的? 'std :: vector * v1 = new std :: vector [2] {{1,2},{3,4}};' –
OGH
2013-04-07 09:35:25
@OGH,爲'std :: vector'數組分配內存,初始化數組中的向量 – soon 2013-04-07 09:39:41