21xrx.com
2024-11-25 08:01:10 Monday
登录
文章检索 我的文章 写文章
C++中的Map能否存储结构体?
2023-06-26 17:43:27 深夜i     --     --
C++ Map 存储 结构体

C++语言中的Map是一种非常实用的数据结构,可以用于存储一组数据的键值对。但是,在使用Map时,有很多程序员会遇到一个问题:能否将结构体存储在Map中?

事实上,C++中的Map是可以存储结构体的。Map的定义需要键和值,而结构体可以作为值来存储。例如,如果我们要使用Map存储一些学生的信息,我们可以定义一个包含学生信息的结构体Student,然后将其作为Map的值存储。

下面是一个示例代码:


#include <map>

#include <string>

struct Student

  std::string name;

  int age;

  int score;

;

int main() {

  std::map<int, Student> studentMap;

  

  Student student1;

  student1.name = "Alice";

  student1.age = 18;

  student1.score = 98;

  studentMap.insert(std::pair<int, Student>(1, student1));

  

  Student student2;

  student2.name = "Bob";

  student2.age = 19;

  student2.score = 92;

  studentMap.insert(std::pair<int, Student>(2, student2));

  

  return 0;

}

在上面的示例代码中,我们定义了一个名为Student的结构体,然后我们使用std::map 定义了一个名为studentMap的Map,其中键是int类型(用于存储学生的编号),值是Student类型(用于存储学生的信息)。

接着,我们定义了两个学生对象student1和student2,并将它们添加到studentMap中,每个学生对象都有不同的编号,也有不同的姓名、年龄和成绩。

我们可以使用类似于下面这样的代码来访问Map中的结构体:


std::map<int, Student>::iterator it;

for (it = studentMap.begin(); it != studentMap.end(); it++)

  std::cout << "Student " << it->first << ": "

       << it->second.name << "

在上面的代码中,我们使用迭代器(iterator)遍历studentMap中的所有学生对象,然后输出每个学生的编号、姓名、年龄和成绩。

总而言之,C++中的Map能够很好地支持结构体的存储,可以将结构体作为Map的值来使用,做到了更加简便的操作。如果想要存放类,也可以采用这个方式。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复