C++ 解决 'no member named 'index' in 'std::vector' 错误

在使用 C++ 编写代码时,您可能会遇到 'no member named 'index' in 'std::vector'' 错误。这个错误通常出现在您试图访问 std::vector 元素的 'index' 成员时,而该成员实际上并不存在。

错误原因

这个错误的根本原因是您错误地将 std::vector 对象视为具有名为 'index' 的成员。std::vector 实际上是一个动态数组,它使用从 0 开始的索引来访问其元素。它没有名为 'index' 的成员。

解决方案

为了解决这个问题,您需要使用正确的语法来访问 std::vector 的元素。您可以使用方括号 [] 和元素的索引来访问它。

让我们看一个例子:cppclass Solution {private: struct my_type { long value; int index; };public: bool containsNearbyAlmostDuplicate(vector& nums, int k, int t) { int i = 0, j = 1,minnum=nums[0],maxnum=nums[0],bucketsize,bucketnum,tmp; for(i=1;i<nums.size();i++){ minnum=min(minnum,nums[i]); maxnum=max(maxnum,nums[i]); } bucketsize=t+1; bucketnum=(maxnum-minnum)/bucketsize+1; // 使用括号进行声明和初始化 vector<vector<my_type>> buckets(bucketsize * bucketnum); for(i=0;i<nums.size();i++){ tmp=(nums[i]-minnum)/bucketsize; if(buckets[tmp].size()!=0){ if(i-buckets[tmp].back().index<=k) return true; } if(buckets[tmp+1].size()!=0){ if(i-buckets[tmp+1].back().index<=k&&abs(nums[i]-buckets[tmp].back().value)<=t) return true; } buckets[tmp].push_back({nums[i],i}); } return false; }};

在原始代码中, vector<vector<my_type>>buckets[bucketsize*bucketnum]; 声明了一个数组,而不是一个 vector。为了创建一个 vector 并初始化其大小,我们需要使用括号 ()

总结

'no member named 'index' in 'std::vector'' 错误是一个常见的 C++ 错误,它源于对 std::vector 语法的误解。通过使用正确的索引访问方法,您可以轻松解决此错误并编写更强大的 C++ 代码。

希望这篇文章能帮助您理解并解决这个 C++ 错误。如果您有任何其他问题,请随时提问。

C++ 解决 'no member named 'index' in 'std::vector' 错误

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

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