我正在基于数据结构的C ++实践。
我的班级包含这样的属性map<int, list <Route *>>
。我的问题是,当我向地图添加密钥时会发生什么。是否必须初始化列表?我希望在该键的描述中包含一个空文件。
这就是我的想法:
map<int, list<Route* > >::iterator it= _mapRoutesAirline.find(IDAirline);
if(it == _mapRoutesAirline.end())
_mapRoutesAirline[IDAirline] = list<Route*>();
是,您可以将空白列表作为值添加到地图,例如:
if(it == _mapRoutesAirline.end())
_mapRoutesAirline.insert(std::make_pair(IDAirline, list<Route*>{}));
是的,您可以简单地分配给map元素(假设C ++ 11或更高版本的语法:]
_mapRoutesAirline[IDAirline] = {};
请注意,在许多情况下,您不会have分配空列表,因为任何尝试访问映射中尚不存在的键的尝试都会自动为该键创建默认的构造列表,这是一个空列表。这意味着,例如,如果您尚未向_mapRoutesAirline[42]
分配任何内容,则_mapRoutesAirline[42]
将返回一个空列表。
您可以在定义新键时创建一个空列表,而无需定义列表的数据类型。
_mapRoutesAirline[IDAirline] = {};
此外,您无需定义迭代器就可以查找并插入元素可以通过这种方式完成
if(_mapRoutesAirline.find(IDAirline) == _mapRoutesAirline.end()){
_mapRoutesAirline[IDAirline] = {};
}