用C++对一个list对象进行循环,然后再对list里面的map对象进行循环,如果name等于“MM”则输出本次循环的name和key
时间: 2023-05-21 20:01:14 浏览: 100
可以使用以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char *name;
int key;
} Map;
typedef struct {
Map *maps;
int size;
} List;
void loop_list(List *list) {
for (int i = 0; i < list->size; i++) {
Map map = list->maps[i];
if (strcmp(map.name, "MM") == 0) {
printf("name: %s, key: %d\n", map.name, map.key);
}
}
}
int main() {
Map maps[] = {
{"MM", 1},
{"AA", 2},
{"BB", 3},
{"MM", 4},
{"CC", 5},
};
List list = {maps, 5};
loop_list(&list);
return 0;
}
```
这个程序定义了两个结构体,一个是 `Map`,表示一个键值对,包含一个字符串类型的 `name` 和一个整数类型的 `key`;另一个是 `List`,表示一个列表,包含一个 `Map` 类型的数组 `maps` 和一个整数类型的 `size`,表示数组的长度。
`loop_list` 函数接收一个 `List` 类型的指针,遍历 `maps` 数组,如果 `name` 等于 "MM",则输出 `name` 和 `key`。
在 `main` 函数中,定义了一个 `Map` 类型的数组 `maps`,包含了五个键值对,然后将这个数组和数组长度构造成一个 `List` 类型的变量 `list`,并将其传递给 `loop_list` 函数进行遍历。最终输出结果为:
```
name: MM, key: 1
name: MM, key: 4
```
阅读全文