c++ 中的合并排序数组错误:引用绑定到类型 'int' 的空指针 (stl_vector.h)



https://leetcode.com/problems/merge-sorted-array/在这个leetcode问题中,这就是逻辑,我使用了

class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i = 0;
int j = 0;
int k = 0;
vector<int> ans;

while (i<m && j<n) {

if (nums1[i] < nums2[j]){
ans[k++] = nums1[i++];

}
else {
ans[k++] = nums2[j++];

}
}           
while (i<m) {
ans[k++] = nums1[i++];

}            
while (j<n) {
ans[k++] = nums2[j++];
}        
for (int h = 0; h<(m+n); h++) {
nums1[h] = ans[h];
}
}
};

在运行代码时,我得到了这个运行时错误。错误图像如何解决此

这是一个大小为零的矢量

vector<int> ans;

此代码尝试更改大小为零的矢量的元素。

ans[k++] = nums1[i++];

这就是你犯错误的原因。

如果要将元素添加到矢量的末尾,请使用push_back

ans.push_back(nums1[i++]);

C++向量不会自动改变大小,您必须使用push_backresizeinsert或类似的东西。

或者,从开始,使矢量大小正确

vector<int> ans(m + n);

尽管我自己更喜欢CCD_ 5方法。

相关内容

最新更新