web-dev-qa-db-ja.com

同じ長さの2つのint配列を比較する最良の方法は?

int配列bとcをaと比較する最良の方法は何ですか:

int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};

bとcは単なる例であり、0と1の任意の組み合わせであると想定しています。

と同じ配列を検出しようとしています。私はしばらくこれをグーグルで検索しましたが、満足のいく答えは見つかりませんでした。

これは私が理解する初心者の質問です、あなたの忍耐に感謝します。

10
user1083734

<string.h>の標準のmemcmp関数を使用します。

memcmp(a, b, sizeof(a)) == 0

abが等しいときはいつでも。

29
Fred Foo

あなたが意味するなら

int a[] = {0,1,0,0,1};
int b[] = {0,1,0,0,1};
int c[] = {1,1,0,0,1};

その後

memcmp(a, b, sizeof(a)); /* returns zero for a match */
memcmp(a, c, sizeof(a)); /* returns nonzero for no match */
5
Useless

ループを使用して、個々の要素を次々に比較します。

4
sth

質問については、より多くの情報が必要です。私はあなたの質問を以下の2つの方法に分けることができます、

  1. 順序を考慮して配列の内容を比較しますか? Ex:char a [] = {a、b、c}、b [] = {a、c、b}ここでは順序を検討しているため、内容は同じではありませんa!= b

  1. 順序に関係なく配列の内容を比較しますか? Ex:char a [] = {a、b、c}、b [] = {a、c、b}ここで順序を考慮しない場合、内容は同じなのでa == b

質問番号1の解決策:この問題にはmemcmpを使用できます。 memcmpは辞書式順序を比較し、以下のように0または1または-1を返すためです。

 #include<stdio.h>
    #include<string.h>
    int main()
    {

        char a[]={'a','b','c'};
        char b[]={'a','b','c'};
        int x=memcmp(a,b,sizeof(a));
        printf("%d\n",x);

    return 0;
    }
***output:0***

    #include<stdio.h>
    #include<string.h>
    int main()
    {

        char a[]={'a','c','b'};
        char b[]={'a','b','c'};
        int x=memcmp(a,b,sizeof(a));
        printf("%d\n",x);

    return 0;
    }
***output:1***

    #include<stdio.h>
    #include<string.h>
    int main()
    {

        char a[]={'a','b','c'};
        char b[]={'b','a','c'};
        int x=memcmp(a,b,sizeof(a));
        printf("%d\n",x);

    return 0;
    }
***output:-1***

質問2の解決策:この問題にはmemcmpを使用できます。この問題の最善の解決策は、次のとおりです。

ここで、私は上記の問題に答えました https://stackoverflow.com/a/36130812/5206646

0
Lakshmikanth Gr