0

我正在尝试将向量推入列表。我的问题是在将新向量推入列表后如何分配它。

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

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

上面的代码不起作用。
错误:从 'int' 到 'int*' 的无效转换</p>

这是一个加密类。我需要生成一堆哈希并检查冲突。所以是的,如果我找不到碰撞,在某些方面我会耗尽内存。(碰撞 - 找到将生成相同哈希的输入)。

4

1 回答 1

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问题,而且这个比大多数其他的更是如此。

于 2013-09-26T00:21:55.467 回答