class Solution {
public:
vector<int> decompressRLElist(vector<int>& nums) {
vector<int> pusher;
for(int i = 0; i<nums.size(); i+=2){
pusher.push_back(nums.at(i*nums.at(i+1)));
}
return pusher;
}
}一开始,我认为向量是空的。因此,使用push_back向其中插入元素应该没有问题。但尽管如此,还是抛出了一个错误:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 8) >= this->size() (which is 4)发布于 2021-06-25 14:49:34
首先,在这一行
pusher.push_back(nums.at(i*nums.at(i+1)));你不知道A[i+1]的数字是多少,这里是nums.at(i+1),它将乘以i。假设你的i = 5,size = 10,A[i + 1] = 6,那么pusher.push_back(nums.at(5*6))会自动超出5*6 = 30的范围,而size = 10的大小。
其次,如果要访问循环中的i + 1索引,则必须考虑将循环终止条件减1。
for(int i = 0; i<nums.size() - 1; i+=2)但这在你的情况下是行不通的。因为你在循环中的代码是完全有缺陷的。因为你没有提到你想做什么,所以我不能告诉你解决方案。
https://stackoverflow.com/questions/68125930
复制相似问题