C++ 更改STL映射的指定值
当我创建一个C++ 更改STL映射的指定值,c++,map,stl,C++,Map,Stl,当我创建一个std::map时,所有索引最初都没有指向任何地方。我一呼叫他们,他们就分配并赋值0 例如: map <int, int> x; cout << x.[31233]; mapx; cout您应该停止使用运算符[],而在打算插入新值时使用insert()。如果您想为从未插入的内容设置一个“默认”值,那么最好编写自己的容器,该容器在内部使用映射,并公开诸如get()方法之类的内容,该方法从映射返回存储的值,如果找不到,则返回-1。这样可以避免存储大量不需要的-1
std::map
时,所有索引最初都没有指向任何地方。我一呼叫他们,他们就分配并赋值0
例如:
map <int, int> x;
cout << x.[31233];
mapx;
cout您应该停止使用运算符[]
,而在打算插入新值时使用insert()
。如果您想为从未插入的内容设置一个“默认”值,那么最好编写自己的容器,该容器在内部使用映射,并公开诸如get()方法之类的内容,该方法从映射返回存储的值,如果找不到,则返回-1。这样可以避免存储大量不需要的-1值。您只需停止使用运算符[]
,而在插入新值时使用insert()
。如果您想为从未插入的内容设置一个“默认”值,那么最好编写自己的容器,该容器在内部使用映射,并公开诸如get()方法之类的内容,该方法从映射返回存储的值,如果找不到,则返回-1。这样可以避免存储大量不需要的-1值。您只需停止使用运算符[]
,而在插入新值时使用insert()
。如果您想为从未插入的内容设置一个“默认”值,那么最好编写自己的容器,该容器在内部使用映射,并公开诸如get()方法之类的内容,该方法从映射返回存储的值,如果找不到,则返回-1。这样可以避免存储大量不需要的-1值。您只需停止使用运算符[]
,而在插入新值时使用insert()
。如果您想为从未插入的内容设置一个“默认”值,那么最好编写自己的容器,该容器在内部使用映射,并公开诸如get()方法之类的内容,该方法从映射返回存储的值,如果找不到,则返回-1。这样可以避免存储大量不需要的-1值。在此定义之后
map <int, int> x;
不能这样做,默认值为-1,因为相对于下标操作符
的C++标准
如果映射中没有与x等价的键,则将值_type(x,T())插入到映射中
对于类型int
int()
zero,初始化相应的对象
否则,您应该使用一些insert
方法,在该方法中,您将明确指定初始值。在此定义之后
map <int, int> x;
不能这样做,默认值为-1,因为相对于下标操作符
的C++标准
如果映射中没有与x等价的键,则将值_type(x,T())插入到映射中
对于类型int
int()
zero,初始化相应的对象
否则,您应该使用一些insert
方法,在该方法中,您将明确指定初始值。在此定义之后
map <int, int> x;
不能这样做,默认值为-1,因为相对于下标操作符
的C++标准
如果映射中没有与x等价的键,则将值_type(x,T())插入到映射中
对于类型int
int()
zero,初始化相应的对象
否则,您应该使用一些insert
方法,在该方法中,您将明确指定初始值。在此定义之后
map <int, int> x;
不能这样做,默认值为-1,因为相对于下标操作符
的C++标准
如果映射中没有与x等价的键,则将值_type(x,T())插入到映射中
对于类型int
int()
zero,初始化相应的对象
否则,您应该使用一些insert
方法,明确指定初始值。给定std::map
,通过操作符[](cont key_type&)
查找任意键时,如果该键不存在,则会自动为该键插入value_type()
。在您的例子中,value\u type
是int
,而int()
是零初始化的,因此结果是零
如果您想使用不同的默认构造,您可以选择,其中最极端的是为int
编写一个自定义分配器,并为我们编写一个construct
成员-1,用于int
值类型(恶心)。我想你会发现简单地:
std::map <int, int> x;
// load map with values...
int res = -1;
auto it = x.find(31233);
if (it != x.end())
res = x.second;
// use res here.
std::map x;
//加载带有值的映射。。。
int res=-1;
自动it=x.find(31233);
如果(it!=x.end())
res=x.s;
//在这里使用res。
给定一个std::map
,通过操作符[](cont key\u type&)
查找任意键时,如果该键不存在,将自动为该键插入value\u type()。在您的例子中,value\u type
是int
,而int()
是零初始化的,因此结果是零
如果您想使用不同的默认构造,您可以选择,其中最极端的是为int
编写一个自定义分配器,并为我们编写一个construct
成员-1,用于int
值类型(恶心)。我想你会发现简单地:
std::map <int, int> x;
// load map with values...
int res = -1;
auto it = x.find(31233);
if (it != x.end())
res = x.second;
// use res here.
std::map x;
//加载带有值的映射。。。
int res=-1;
自动it=x.find(31233);
如果(it!=x.end())
res=x.s;
//在这里使用res。
给定一个std::map
,通过操作符[](cont key\u type&)
查找任意键时,如果该键不存在,将自动为该键插入value\u type()。在您的例子中,value\u type
是int
,而int()
是零初始化的,因此结果是零
如果您想使用不同的默认构造,您可以选择,其中最极端的是编写一个自定义的