在刷leetcode时,遇到了一道使用标准库的题,如下
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
//将nums2中的数先装进nums1
int j = 0;
for(int i = (m-1); i < (m+n);i++ ){
nums1[i] = nums2[j++];
}
//将nums1按从小到大排序
std::sort(nums1.begin(),nums1.end());
}
int main(){
using namespace std;
vector<int> nums1 = {1,2,3,0,0,0};
int m = 3;
vector<int> nums2 = {2,5,6};
int n = 3;
merge(nums1,m,nums2,n);
//输出合并排序后的 nums1
for (int num : nums1) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
如果使用命令行编译:g++ main.cpp -lstdc++ 则没有问题
但使用VS Code调试时会出现如下报错
分析可知是代码中使用了标准库,但是在vscode中debug时没链接上
打开tasks.json
将“-lstdc++”添加上,再次调试
可以正常使用
以此类推,在编译多线程调试的时候直接用vscode调试则
打开task.json添加上“-lpthread”
就可以正常调试了~