尝试运行一个返回两个数组联合的 cpp 程序。计算机是 M1 Pro Macbook Pro 14.2 英寸,Mac OS Monterey 12.6。将 VSCode 与 C/C++ 扩展和 Coderunner 结合使用。我之前在 Vscode 上运行 cpp 程序时也遇到了问题,所以我遵循了一堆不同的指南来试图解决这个问题。有些是用自制软件安装 mingw-w64,有些是 gcc,最常用的是 coderunner,这就是我坚持使用它的原因。
#include<iostream>
#include <vector>
using namespace std;
//this code works only for sorted arrays, notice the
void Find_Union(int arr1[],int arr2[], int n, int m)
{
vector <int> Union;
int i = 0, j = 0;
while(i<n && j<m)
{
if(arr1[i]<=arr2[j])
{
if (Union.size() == 0 || Union.back() != arr1[i])
{
Union.push_back(arr1[i]);
i++;
}
}
else
{
if (Union.size() == 0 || Union.back() != arr2[j])
{
Union.push_back(arr2[j]);
j++;
}
}
}
while (i < n) // IF any element left in arr1
{
if (Union.back() != arr1[i])
Union.push_back(arr1[i]);
i++;
}
while (j < m) // If any elements left in arr2
{
if (Union.back() != arr2[j])
Union.push_back(arr2[j]);
j++;
}
for(auto &it: Union)
{
cout<<it<< " ";
}
}
int main()
{
int arr1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr2[] = {2, 3, 4, 4, 5, 11, 12};
int n = sizeof(arr1)/sizeof(arr1[0]);
int m = sizeof(arr2)/sizeof(arr2[0]);
Find_Union(arr1,arr2,n,m);
return 0;
}
出于某种原因,在尝试运行这段代码时,出现以下错误:
UnionOfTwoSortedArrays-Pointers.cpp:44:9: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
for(auto &it: Union)
^
UnionOfTwoSortedArrays-Pointers.cpp:44:17: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
for(auto &it: Union)
错误是因为当我尝试使用自动迭代器使用 cout 打印出 Union 向量的元素时。
我试图搞乱 DefaultL: Cpp Standard 扩展设置,用于 C/C++ 扩展,并且还尝试在 Code Runner 的扩展设置中编辑 Cpp 语言的执行程序映射设置。
作为旁注,使用#include