C++ 结构体 vector ,为什么我不能使用 vector .at(i) 或 vector [i] 作为结构体?

标签 c++ vector struct compiler-errors

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/

相关文章:

c++ - 如何裁剪 QComboBox 中的文本或如何获取其实际宽度?

c++ - 大型数组、std::vector 和堆栈溢出

c++ - 为什么内置排序无法对 vector 映射进行排序?

C++ 删除指针

database - Golang DB反/序列化方法(数据库/sql之上的sqlx)

C++:以管理员身份运行程序

c++ - boost filesystem::path 构造函数 std::length_error

c++ - 以排序方式遍历 std::vector<std::pair<T,U>> 对象

c++ - 在 vector <> 中嵌套 vector <> 时出错

检查list2是否包含list1