【问题标题】:Compare length of two arrays using C++使用C++比较两个数组的长度
【发布时间】: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&lt;int&gt;。哦,顺便说一句,还要在启用警告的情况下进行编译,它应该表明您的代码已损坏。
  • 您似乎认为数组会在您分配给它们时增长。这不是真的,数组在 C++ 中永远不会改变它们的大小。
  • int arrayThree[] = {}; 在标准 C++ 中你不能有 0 大小的数组。你被允许数组大小为 0 的编译器扩展所愚弄,但也有了该扩展,数组的大小是固定的(为 0)
  • 不,它不工作。您的代码甚至无法编译(也没有 pedentic 标志,存在错误)。如果你让它编译,越界访问数组仍然是未定义的行为。未定义的行为意味着任何事情都可能发生,包括:

标签: c++ arrays


【解决方案1】:

您不能增加或减少数组的大小,因为它是静态的。 您只能按大小比较两个数组。要增加或减小大小以及添加元素,您可以使用向量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多