2

vectorの を初期化したいlist<int>。関数を使用fillしましたが、コンパイラでエラーが表示されます。この方向で私を助けてください。

std::vector<std::list<int>> neighbors(NRecords);
std::fill(neighbors.begin,neighbors.end,&std::vector<int>(NNeighbors)); // ERROR

エラー: エラー 2 エラー C3867: 'std::vector<_Ty>::begin': 関数呼び出しに引数リストがありません。'&std::vector<_Ty>::begin' を使用してメンバーへのポインターを作成します ...

4

4 に答える 4

5

コードから推測できることから、単にこれが必要なようです:

std::vector<std::list<int>> neighbors(NRecords, std::list<int>(NNeighbors));

これは、次のようなコンストラクター (リンクの #2)を使用します。

vector(size_type count, value_type value);

上記の呼び出しでNRecordsは、 はベクトルに含まれる要素の数であり、2 番目の引数は、同じ方法で初期化されたリスト (サイズから始まるNNeighbors) がベクトルの各要素の値に使用されます。これにより、サイズを指定してベクトルを作成し、個別に塗りつぶす必要がなくなります。

std::fill完全を期すために、呼び出しにいくつか問題があります。

  • まず、beginendは関数なので、括弧 ( ) が必要ですbegin()
  • 次に、以前に sstd::vectorが含まれていると指定したときに sで埋めていますstd::list
  • 次に、値自体ではなく、値へのポインターを渡します。
  • 最後に、その場で作成した一時コンテナーのアドレスを取得していますが、これは許可されていません。ただし、そもそもアドレスを取得するべきではありません。

修正すると、次のように記述できます。

std::fill(neighbours.begin(), neighbours.end(), std::list<int>(NNeighbors));
于 2013-08-17T05:18:55.367 に答える
0

あなたのコードを正しく読めば、単にリストのベクトルを宣言したいだけです。これをメインファイルで機能させましたが、クラスのプライベートメンバーとして機能させる方法がわかりません.....

vector< list < string >> hashTable(1373);
于 2016-11-20T07:50:12.660 に答える