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 iinfo i也是你的编译器想知道你为什么要传递一个info&to vector::at

更改名称,您应该一切顺利。

于 2013-07-19T00:49:14.800 回答