C言語の std::map の使い方は?

C言語では、マップはキーと値のペアを格納するためのデータ構造であり、辞書や連想配列のようにキーを介して高速にデータを参照できます。C言語には組み込みのマップデータ構造はありませんが、他の方法を使用して同様の機能を実現できます。

配列と構造体を使い、単純なマップを実装するよくある方法は、キーと値という 2 つのメンバを保持する構造体を定義し、配列を使って構造体を格納することです。配列を走査することで、キーを使ってそれに対応する値を見つけることができます。

ハッシュ表を利用する方法がもう1つあります。ハッシュ表はハッシュ関数によってキーをインデックスにマッピングできる、高効率のデータ構造です。C 言語でハッシュ表を作成する場合は、独自にハッシュ関数を実装するか、サードパーティ製のライブラリを使用できます。

配列と構造体を使用した簡単なマップの実装例は次のとおりです。

#include <stdio.h>
#include <string.h>

#define MAX_SIZE 100

typedef struct {
    int key;
    int value;
} KeyValuePair;

KeyValuePair map[MAX_SIZE];
int size = 0;

void map_put(int key, int value) {
    KeyValuePair pair;
    pair.key = key;
    pair.value = value;
    map[size++] = pair;
}

int map_get(int key) {
    for (int i = 0; i < size; i++) {
        if (map[i].key == key) {
            return map[i].value;
        }
    }
    return -1; // 如果找不到对应的键,则返回一个特定的值,如-1
}

int main() {
    map_put(1, 10);
    map_put(2, 20);
    map_put(3, 30);

    printf("%d\n", map_get(2)); // 输出20

    return 0;
}

より効率性の高いmapの実装が必要な場合は、ハッシュ表を使用することを検討してください。これは簡単な例であり、実際のmapの実装はさらに複雑になります。

bannerAds