我们可以访问CPP数组中的负索引吗



我正在解决一个与相邻元素的最大和有关的问题。我递归地解决了它,并试图使用制表来解决它,但没有成功。我在网上找到了一个运行完美的代码,但在那里我发现了一个例子,我们试图访问向量中的负索引。据我所知,它一定给了我一个错误,但它运行得很好。

参考代码:

int maximumNonAdjacentSum(vector<int> &nums){
int n = nums.size();
vector<int> table(n+1,0);
table[0] = nums[0];
for(int i=1;i<=n; i++){
table[i] = max(nums[i]+table[i-2],table[i-1]);
}
return table[n];
}

您可能正在Release模式下运行,该模式不会抛出"vector subscript out of range"断言。

对于std::vector和许多其他类型的数组,运算符[]采用无符号数,这意味着有符号数将显式转换为无符号数。-1将是0xffffffff-2将是0xfffffffe,依此类推

在这种情况下,您试图访问的项远远超出了向量的实际大小,但它恰好在可读内存区域中,因此它会给您垃圾值,而不是seg错误。

相关内容

  • 没有找到相关文章

最新更新