Я использую вектор частоты для подсчета вхождений, но получаю ошибку времени выполнения от UndefineBehaviorSanitizer.
Строка 1122: Char 34: ошибка времени выполнения: применение ненулевого смещения 4 к нулевому значению указатель.
СВОДКА: UndefineBehaviorSanitizer: undefined-behaviour
Код: Выделить всё
class Solution {
public:
vector findErrorNums(vector& nums) {
vector cnt(nums.size, 0);
vector ans;
for (int i = 0; i < nums.size(); i++) {
cnt[nums[i]]++;
if (cnt[nums[i]] > 1) {
ans.push_back(nums[i]);
ans.push_back(nums[i] + 1);
}
}
return ans;
}
};
- Я проверил, что nums содержит допустимые значения.
- Я проверил логику цикла, но ошибка выполнения все равно возникает.
- Почему этот код вызывает ошибку времени выполнения, связанную с std::vector?
- Как правильно инициализировать и индексировать вектор cnt в этом случае?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -h-in-c-ve
Мобильная версия