C++ 用作映射值的列表的默认值

C++ 用作映射值的列表的默认值,c++,list,map,C++,List,Map,嗨,我想知道我是否有一个以int为元素的映射,以及int为值的列表,我试图访问一个不在映射中的键。运算符返回一个默认值。但是列表的默认值是什么呢?默认构造函数?是的,它将默认构造一个列表 如果这不是您想要的行为,您可以使用std::map::at()而不是std::map::operator[]来访问元素,如果键不存在,这将引发异常,而不是插入新元素 注意:我的回答假设您在问题中引用了std名称空间。是的,它将默认构造一个列表 如果这不是您想要的行为,您可以使用std::map::at()而不是

嗨,我想知道我是否有一个以int为元素的映射,以及int为值的列表,我试图访问一个不在映射中的键。运算符返回一个默认值。但是列表的默认值是什么呢?默认构造函数?

是的,它将默认构造一个列表

如果这不是您想要的行为,您可以使用
std::map::at
()而不是
std::map::operator[]
来访问元素,如果键不存在,这将引发异常,而不是插入新元素


注意:我的回答假设您在问题中引用了
std
名称空间。

是的,它将默认构造一个列表

如果这不是您想要的行为,您可以使用
std::map::at
()而不是
std::map::operator[]
来访问元素,如果键不存在,这将引发异常,而不是插入新元素


注意:我的回答假设您在问题中引用了
std
命名空间。

如果
不在映射中,则
操作符[]
会使用该
键插入一个新元素,并使用
默认构造函数
,您可以详细了解该构造函数


for
std::list
构造一个
空的
容器。

如果
不在映射中,则
操作符[]
插入一个带有该
键的新元素,并使用
默认构造函数,您可以阅读更多有关该构造函数的信息


for
std::list
构造一个
空的
容器。

Yes。任何对象的默认值都是由无参数构造函数创建的(如果不提供显式无参数构造函数,则为默认构造函数)。默认列表只是一个空列表。非常感谢,我只需要另一个精度。如果在一段时间内向映射添加键值,则它们是在我离开while时删除的,还是在离开while后保留?取决于映射的范围。如果映射的范围持续超出
while
循环,则为是,对其所做的任何更改都将保留。是。任何对象的默认值都是由无参数构造函数创建的(如果不提供显式无参数构造函数,则为默认构造函数)。默认列表只是一个空列表。非常感谢,我只需要另一个精度。如果在一段时间内向映射添加键值,则它们是在我离开while时删除的,还是在离开while后保留?取决于映射的范围。如果映射的范围持续超出
while
循环,则是,对其所做的任何更改都将保留。