【发布时间】:2022-12-10 14:21:26
【问题描述】:
我想使用 C++ 比较两个整数数组,如果它们的长度不相等,则通过将项添加到较小长度的数组来使这些数组彼此相等。这是我的代码 sn-p。
#include <iostream>
using namespace std;
int main() {
int arrayOne[] = {1,2,3,4,5,6,7};
int arrayTwo[] = {8,5,6,4,5,6,4};
int arrayThree[] = {};
int a = sizeof(arrayOne) / sizeof(int); // 7
int b = sizeof(arrayTwo) / sizeof(int); // 7
if(a != b){
if(a > b){ // means b is small
int diff = a - b ; // = 2 ... 0,1
for(int k=0; i < k ; k++ ){
arrayTwo[b+k] = b +k;
}
}
else{
int diff = b - a ; // = 2 ... 0,1
for(int k=0; i < k ; k++ ){
arrayOne[b+k] = b +k;
}
}
}
// Here I want to compare these two arrays....
for (int i=0; i < a; i++)
{
arrayThree[i] = arrayOne[i] + arrayTwo[i]; // aggregate the sums into the first array
}
for(int i =0; i < a;i++){
cout<<arrayThree[i]<<endl;
}
return 0;
}
主要问题我想对两个数组的项目求和,以便需要具有相同的长度。
【问题讨论】:
-
你的问题是什么?您正在计算尺寸,那么添加错误检查有什么问题?
-
数组不能改变它们的大小。请考虑使用
std::vector<int>。哦,顺便说一句,还要在启用警告的情况下进行编译,它应该表明您的代码已损坏。 -
您似乎认为数组会在您分配给它们时增长。这不是真的,数组在 C++ 中永远不会改变它们的大小。
-
int arrayThree[] = {};在标准 C++ 中你不能有 0 大小的数组。你被允许数组大小为 0 的编译器扩展所愚弄,但也有了该扩展,数组的大小是固定的(为 0) -
不,它不工作。您的代码甚至无法编译(也没有 pedentic 标志,存在错误)。如果你让它编译,越界访问数组仍然是未定义的行为。未定义的行为意味着任何事情都可能发生,包括: