如何使用 for 循环来比较不同大小的数组
how do i use a for loop to compare arrays of different sizes
我有 2 个数组:
arr1 = [0, 1, 2, 3, 4, 5, 6] arr2 = [0, 1, 3, 3, 4, 6]
我正在尝试编写一个函数来比较两个数组,并使用缺少的数字创建一个新数组。
我尝试了这个循环,但它没有打印出任何东西。还有什么其他方法可以比较 2 个不同大小的数组?
int n = 0;
int *newArr = new int[];
for (int i = 0; i<=6; i++) {
if (arr1[i] != arr2[i]) {
newArr[n] = arr1[i]
n++;
}
}
for (int j = 0; j<n; j++) {
cout << arr[j] << endl;
}
我正在尝试编写一个函数来比较两个数组并制作一个 缺少数字的新数组。
您可以使用基于范围的 for 循环和std::find
来检查两个数组中缺少的数字
,然后将结果存储在std::set
例
int main()
{
int a[] { 0, 1, 2, 3, 4, 5, 6 };
int b[] { 0, 1, 3, 3, 4, 6 };
std::set<int> c;
for (auto const& i : a)
if (std::find(std::begin(b), std::end(b), i) == std::end(b))
c.insert(i);
for (auto const& i : b)
if (std::find(std::begin(a), std::end(a), i) == std::end(a))
c.insert(i);
}
或使用常规 for 循环
for (auto it = std::begin(a); it != std::end(a); ++it)
if (std::find(std::begin(b), std::end(b), *it) == std::end(b))
c.insert(*it);
尝试这样的事情:
int arr1[] = {0, 1, 2, 3, 4, 5, 6};
int size_arr1 = 7;
int arr2[] = {0, 1, 3, 3, 4, 6};
int size_arr2 = 6;
int *newArr = new int[size_arr1 + size_arr2];
int n = 0;
for (int i = 0; i < size_arr1; i++) {
newArr[n++] = arr1[i];
}
for (int i = 0; i < size_arr2; i++) {
bool found = false;
for (int j = 0; j < n; j++) {
if (arr2[i] == newArr2[j]) {
found = true;
break;
}
}
if (!found)
newArr[n++] = arr1[i];
}
for (int i = 0; i < n; i++) {
cout << newArr[i] << endl;
}
delete[] newArr;
从两个数组中收集唯一编号的另一种方法是改用std::set
或std::unsorted_set
,例如:
#include <unordered_set>
int arr1[] = {0, 1, 2, 3, 4, 5, 6};
int arr2[] = {0, 1, 3, 3, 4, 6};
set::unsorted_set newArr;
for(int num : arr1) {
newArr.insert(num);
}
for(int num : arr2) {
newArr.insert(num);
}
for (int num : newArr) {
std:: cout << num << endl;
}
您已经在代码中动态声明了数组(即在堆上(,并且用数字初始化它们并不那么简单。您还将分配一个大小为 0 的数组。如果在堆栈上声明数组,则可以使用嵌套的 for 循环实现要执行的操作。
请注意,对于大型数据集,这将效率低下。如果你好奇研究二叉搜索算法。
#include <iostream>
int main()
{
int arr1Size = 6;
int arr2Size = 8;
int arr1[] = { 2, 5, 7, 12, 45, 65 };
int arr2[] = { 2, 5, 6, 10, 32, 65, 98, 123 };
for (int i = 0; i < arr1Size; i++)
{
for (int j = 0; j < arr2Size; j++)
{
if (arr1[i] == arr2[j])
{
std::cout << arr1[i] << std::endl;
}
}
}
}
相关文章:
- 比较字符数组
- 如何在C++中比较两个char数组
- 比较if语句中的数组值和int值
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 比较 c++ 中的字符数组
- 如何将字符串字符与结构数组进行比较?
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- 在C++中返回基元类型数组(Java比较)
- 谷歌测试比较指针数组的内容
- 比较嵌套 for 循环中的两个 wchar 数组?
- C++ 将二维数组索引与条件语句中的函数值进行比较
- 在 c++ 中比较不相等数组或字符串的方法
- 将子字符串与字符串数组进行比较的 IF 条件会在C++中产生错误
- 如何使用 for 循环来比较不同大小的数组
- 如何为映射和priority_queue编写比较器,其中元素是二维数组
- 比较/搜索数组中多个整数的最佳解决方案
- 从数组比较2个字符串时,程序崩溃
- C++ 更快的字符数组比较
- c++数组比较和移动?为什么苹果不动?
- 快速数组比较和替换最接近值的元素的算法.(跟踪点)