【问题标题】:How to compare an element of a 2D array with rest of the its elements?如何将二维数组的元素与其其余元素进行比较?
【发布时间】:2020-08-22 16:44:47
【问题描述】:

我知道我可以使用单个数组来执行此操作,但如果我确实使用单个数组,则会提出我正在为我做的更难的问题。比如说我有一个二维数组:

[["E", "A"], ["R", "B"], ["C", "D"]]

如何将每个元素与其他元素进行比较?例如。 “E”与“A”、“R”、“B”等进行比较。二维数组将始终由 1×2 子数组组成。谁能帮帮我,谢谢。

【问题讨论】:

  • 比较然后呢?您需要如何处理此类比较的结果?你想解决什么终极问题?
  • 对不起,标题应该是“如何将一个元素与二维数组的其余元素进行比较”
  • 请展示您的一些编码工作,并在可能的情况下添加您遇到问题的位置,然后添加 I/O。
  • 这里有一个简单的方法来弄清楚如何做到这一点,它永远不会失败。只需拿出一张白纸。用简单的英语用简短的句子写下来,这是一个循序渐进的过程。完成后,call your rubber duck for an appointment。我们不会在 Stackoverflow 上为其他人编写整个程序。我们总是向您的橡皮鸭提出此类问题。在您的橡皮鸭批准您提出的行动计划后,只需将您写下的内容直接翻译成 C++。任务完成!
  • 获得比较元素的解决方案后,我将有望完成我正在做的问题。不幸的是,我没有做太多编码,因为问题的比较部分非常重要,因此没有它我做不了太多。我不想发布我正在做的整个问题,因为我唯一苦苦挣扎的部分是比较元素。我在不同的网站上搜索了一个多小时,包括堆栈溢出,但我可以在任何地方找到我的答案。请你帮帮我。

标签: c++ arrays multidimensional-array


【解决方案1】:

#include<iostream>

int main(){
    int arr[2][2] = {
    {1,2},
    {3,4},
    };
    int elem;
    for (int i = 0;i < 2;i++){
        for(int j = 0;j < 2;j++){
            //Now you're on the first element
            // I have used a size of 2, but you can use whatever size you want
            elem = arr[i][j];
            for (int a = 0;a < 2;a++){
                for(int b = 0;b < 2;b++){
                    if (arr[a][b] == elem) continue;
                    //Do whatever you want now;
                    std::cout << "Comparing " << elem << " with " << arr[a][b] << "\n";
                }
            }

        }
    }
    return 1;
}


这是输出

Comparing 1 with 2
Comparing 1 with 3
Comparing 1 with 4
Comparing 2 with 1
Comparing 2 with 3
Comparing 2 with 4
Comparing 3 with 1
Comparing 3 with 2
Comparing 3 with 4
Comparing 4 with 1
Comparing 4 with 2
Comparing 4 with 3

【讨论】:

    【解决方案2】:
    #include <array>       // std::array
    #include <utility>     // std::pair
        
    using namespace std;
        
    int main()
    {
        // build objects
        pair<char, char> element1('E', 'A');
        pair<char, char> element2('R', 'B');
        pair<char, char> element3('C', 'D');
        array<pair<char, char>, 3> my_array = {element1, element2, element3};
    
        // perform comparisons
        for (int i = 0; int i != my_array.size(); ++i) {
            yourCompareFunction(my_array[i].first, my_array[i].second);
            for (int j = i + 1; int j != my_array.size(); ++j) {
                yourCompareFunction(my_array[i].first, my_array[j].first); 
                yourCompareFunction(my_array[i].first, my_array[j].second);
                yourCompareFunction(my_array[i].second, my_array[j].first); 
                yourCompareFunction(my_array[i].second, my_array[j].second);
             };
        };
    
    return 0;
    }
    

    【讨论】:

    • 非常感谢,但是,这并不是我想要的 :)
    • 将数组中的每个 char 元素与任何其他元素进行比较。除非您的意思是要在它们之间进行比较的单个元素应该是数组行(即我的实现中的 pairs element1、element2 等)。如果是这种情况,那么您可能需要设置一个单独的 comparePairs(pair a, pair b) 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多