2013-09-26 95 views
0

我試圖將一個向量推入列表中。 我的問題是你如何分配一個新的載體後,你把它推入列表中。C++向量分配問題

std::list<std::vector<int>> foolist; 
std::vector<int> foo; 

while(1) 
{ 
    foolist.push_back(foo); 
    foo = new std::vector<int>; 
} 

上述代碼無效。
錯誤:無效從'int'轉換爲'int *'

這是用於加密類的。我需要生成一堆散列並檢查是否有衝突。所以是的,在某些方面,如果我找不到碰撞,我會耗盡內存。 (碰撞 - 查找將生成相同散列的輸入)。

+2

看起來你正在嘗試用C++語法編寫Java。 –

+0

這不是您從編譯器獲得的確切且完整的錯誤消息。始終提供準確的診斷信息。 –

回答

3

你不需要分配一個新的向量。 std::list實際上將持有的你推什麼副本,所以你可以這樣做:

std::list<std::vector<int>> foolist; 
std::vector<int> foo; 

for (int i=0; i<100; i++) 
    foolist.push_back(foo); 

機會是這整個事情是一個錯誤,但 - 我會考慮,幾乎所有用std::list有問題的,而這一次連比其他人多。

+0

這是一個加密類。我需要生成一堆散列並檢查是否有衝突。所以是的,在某些方面,如果我找不到碰撞,我會耗盡內存。 (碰撞 - 查找將生成相同散列的輸入)。 – 2013-09-26 00:26:53

+2

@ user103052:在這種情況下,我可能會把它們放到trie中。更少的空間和更快的查找。 –

+0

因此,我推入列表中的內容是自動分配的? – 2013-09-26 00:31:25