Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更改STL映射的指定值_C++_Map_Stl - Fatal编程技术网

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()
是零初始化的,因此结果是零

如果您想使用不同的默认构造,您可以选择,其中最极端的是编写一个自定义的