C ++:如何初始化包含给定键的指针列表的映射?

我正在基于数据结构的C ++实践。

我的课程包含一个类似map<int,list <Route *>>的属性。我的问题是,当我向地图添加密钥时会发生什么。是否必须初始化列表?我希望在该键的描述中有一个空文件。

这就是我的想法:

map<int,list<Route* > >::iterator it= _mapRoutesAirline.find(IDAirline);
        if(it == _mapRoutesAirline.end())
            _mapRoutesAirline[IDAirline] = list<Route*>(); 
GUSHANZHUJU 回答:C ++:如何初始化包含给定键的指针列表的映射?

是的,您可以简单地分配给map元素(假设C ++ 11或更高版本的语法):

 _mapRoutesAirline[IDAirline] = {};

请注意,在许多情况下,您不必分配空列表,因为任何尝试访问地图中不存在的键的尝试都会自动创建默认的构造列表该键,这是一个空列表。这意味着,例如,_mapRoutesAirline[42]将返回一个空列表,如果您尚未为_mapRoutesAirline[42]分配任何内容。

,

是的,您可以在地图上添加一个空白列表作为值,例如:

if(it == _mapRoutesAirline.end())
    _mapRoutesAirline.insert(std::make_pair(IDAirline,list<Route*>{})); 
,

您可以在定义新键时创建一个空列表,而无需定义列表的数据类型。

_mapRoutesAirline[IDAirline] = {};

此外,您无需定义迭代器就可以查找并插入元素 可以通过这种方式完成

if(_mapRoutesAirline.find(IDAirline) == _mapRoutesAirline.end()){
       _mapRoutesAirline[IDAirline] = {};
}
本文链接:https://www.f2er.com/3131345.html

大家都在问