如何在两个包含指针的地图中创建列表

How to create a list inside a map where both contain pointers?

本文关键字:指针 地图 列表 创建 包含 两个      更新时间:2023-10-16

我正在做一个需要

的项目
class course;
void add_student(map<int, map<int, list<course *> * > *> &DB, int id);

因此,当我检查课程不介绍时,我想创建一个列表。这是我的代码

if(semesterIt == studentIt->second->end()){
DB[id][semester] = new list<course *>();
}

但是当我运行它时,编译器给我这个错误

no viable overloaded '='

不知道如何修复它。:(

DB[id][semester] = new list<course *>();

在语法上是错误的,因为DB[id]评估指针,而不是对象或参考。

我的建议:

auto& mapPtr = DB[id];
if ( mapPtr == nullptr )
{
  mapPtr = new map<int, list<course *> * >;
  // Not necessary since mapPtr is a reference to the element.
  // DB[id] = mapPtr;
}
auto& course_list_ptr = (*mapPtr)[semester];
if ( course_list_ptr == nullptr ) 
{
   course_list_ptr = new list<course*>;
   // Again, not necessary.
   // (*mapPtr)[semester] = course_list_ptr;
}