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 に答える