2
struct info{
  int num;
  int weight;
};
vector<info> nbr;

上記の宣言はグローバルであり、関数には次のようなループがあります

for(int i=0;i<nbr.size();i++){
  info i = nbr.at(i);
  vector<int> v;
  v.push_back(i.weight);
  tb[i.num] = v;
}

info i = nbr.at(i)エラーが発生します:呼び出しに一致する関数がありません'std::vector<info, std::allocator<info> >::at(info&)'

なぜ?私は何を間違えましたか?

4

1 に答える 1

4
for(int i=0;i<nbr.size();i++){
    info i = nbr.at(i);

これが理由です。参照するものを再定義していますi
それはループ インデックスint iとの両方info iであり、コンパイラは、なぜ に を渡すのか疑問に思っていinfo&ますvector::at

名前を変更すると、準備完了です。

于 2013-07-19T00:49:14.800 に答える