C++ vector数组声明错误导致'no member named'问题解决

在使用C++编写代码时,你可能会遇到类似 'Line 14: Char 21: error: no member named 'value' in 'std::vector<Solution::my_type, std::allocatorSolution::my_type>'' 的报错信息,特别是在处理结构体和vector容器时。

报错原因:

上述报错信息指出代码试图访问一个名为'value'的成员,但该成员在 'std::vector<Solution::my_type, std::allocatorSolution::my_type>' 类型中并不存在。这通常是由于错误地将 vector 声明为数组导致的。

问题代码示例:

vector <my_type> solu[nums.size()];
for(i=0;i<nums.size();i++){
    solu[i].value=nums[i];
    solu[i].index=i;
}

解决方案:

要解决这个问题,您需要使用 vector 的构造函数或 push_back 方法来正确地创建和填充 vector

修改后的代码:

vector<my_type> solu; // 创建一个空的vector
for (i = 0; i < nums.size(); i++) {
    my_type temp; // 创建一个临时的my_type对象
    temp.value = nums[i];
    temp.index = i;
    solu.push_back(temp); // 将temp对象添加到solu中
}

代码解释:

  1. vector<my_type> solu;: 创建一个名为 solu 的空 vector,用于存储 my_type 类型的对象。
  2. my_type temp;: 在循环的每次迭代中,创建一个名为 temp 的临时 my_type 对象。
  3. temp.value = nums[i];temp.index = i;: 将 nums 向量中的值和索引分别赋值给 temp 对象的 valueindex 成员。
  4. solu.push_back(temp);: 使用 push_back 方法将 temp 对象添加到 solu 向量的末尾。

通过这种方式,您就可以避免 'no member named' 错误,并正确地使用 vector 存储结构体数据。

C++ vector数组声明错误导致'no member named'问题解决

原文地址: https://www.cveoy.top/t/topic/oaC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录