我正在尝试将矢量推入列表中。 我的问题是,在将新矢量推入列表后,如何分配新矢量。
std::list<std::vector<int>> foolist;
std::vector<int> foo;
while(1)
{
foolist.push_back(foo);
foo = new std::vector<int>;
}
上述代码不起作用 错误:从“int”到“int *”
的转换无效这是一个加密类。我需要生成一堆哈希并检查冲突。所以是的,在某些方面,如果我找不到碰撞,我将耗尽内存。 (碰撞 - 找到将生成相同哈希的输入)。
答案 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
都是有问题的,而且这个比其他大多数人都要多。