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&)'
为什么呢?我做错了什么?
答案 0 :(得分:4)
for(int i=0;i<nbr.size();i++){
info i = nbr.at(i);
这就是原因。
您正在重新定义i
所指的内容
这是你的循环索引int i
和info i
,你的编译器想知道为什么你将info&
传递给vector::at
。
更改名称,你应该好好去。