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&)'
最佳答案
for(int i=0;i<nbr.size();i++){
info i = nbr.at(i);
这就是原因。
您正在重新定义 i
所指的内容。
它既是您的循环索引 int i
又是 info i
,并且您的编译器想知道为什么您将 info&
传递给 vector: :在
。
更改名称,您就可以开始了。
关于C++ 结构体 vector ,为什么我不能使用 vector .at(i) 或 vector [i] 作为结构体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17736387/