C++map通过key获取value
时间: 2023-08-29 14:12:48 浏览: 206
在C语言中,没有内置的Map数据结构,但可以使用结构体和数组来实现类似的功能。
例如,可以定义一个结构体来表示一个键值对:
```c
struct pair {
int key;
int value;
};
```
然后,可以创建一个包含这些结构体的数组,来表示整个Map:
```c
struct pair map[100]; // 假设Map最多包含100个键值对
int size = 0; // Map当前包含的键值对数量
```
现在,可以实现一个函数来根据键查找对应的值:
```c
int get_value(int key) {
for (int i = 0; i < size; i++) {
if (map[i].key == key) {
return map[i].value;
}
}
// 如果没有找到对应的键,返回一个默认值
return -1;
}
```
这个函数首先遍历整个Map,查找与给定键匹配的条目。如果找到了,就返回对应的值;否则,返回一个默认值(例如-1)。
完整的示例代码如下:
```c
#include <stdio.h>
struct pair {
int key;
int value;
};
struct pair map[100];
int size = 0;
void put(int key, int value) {
// 如果Map中已经存在该键,更新对应的值
for (int i = 0; i < size; i++) {
if (map[i].key == key) {
map[i].value = value;
return;
}
}
// 如果Map中不存在该键,添加一个新的键值对
map[size].key = key;
map[size].value = value;
size++;
}
int get_value(int key) {
for (int i = 0; i < size; i++) {
if (map[i].key == key) {
return map[i].value;
}
}
return -1;
}
int main() {
put(1, 10);
put(2, 20);
put(3, 30);
printf("%d\n", get_value(2)); // 输出20
printf("%d\n", get_value(4)); // 输出-1
return 0;
}
```
阅读全文