首页 > 解决方案 > 程序在数组中查找两个不重复的数字

问题描述

我不知道 int 的向量类,但为什么这段代码没有像 java 一样显示 ArrayIndexOutOfBounds 错误。

for(int i = 0; i < nums.size(); i++) {
    if(nums[i] == nums[i+1])
        i++;
    else            
        ret.push_back(nums[i]);        
}

标签: javac++

解决方案


请参阅for的文档operator[]std::vector

不执行边界检查。

通过此运算符访问不存在的元素是未定义的行为。

带有边界检查的替代方法是at可以抛出std::out_of_range异常的函数。使用此功能更安全,但速度也稍慢。

在这里,Java 似乎优先考虑安全性,而 C++ 将选择权留给了程序员。


推荐阅读