从变量映射键和值初始化
Map key and value initialization from a variable
我很难从代码中计算的变量初始化映射(包括键和值)。比如下面的例子:
int a = 5;
int b = 3;
map<int, int> order;
order[(a)] = b;
我正在尝试将变量 a 作为键,将变量 b 作为值。我可以这样做吗?
"Am I allow to do that ?"
当然可以(请参阅 std::map::operator[]
)。完全没问题(尽管 (a)
的括号是多余的)。
b
的值将正确地插入到键 a
的映射中,无论它之前是否存在(在这种情况下 b
将只替换已经存在的关联值)。
您应该注意的情况是尝试通过键值访问 std::map
,而不是在第一个位置插入值,例如
int storedValue = order[a];
在这种情况下,将创建 order[a]
的默认初始化条目,而在大多数用例中这不是您想要的。
我很难从代码中计算的变量初始化映射(包括键和值)。比如下面的例子:
int a = 5;
int b = 3;
map<int, int> order;
order[(a)] = b;
我正在尝试将变量 a 作为键,将变量 b 作为值。我可以这样做吗?
"Am I allow to do that ?"
当然可以(请参阅 std::map::operator[]
)。完全没问题(尽管 (a)
的括号是多余的)。
b
的值将正确地插入到键 a
的映射中,无论它之前是否存在(在这种情况下 b
将只替换已经存在的关联值)。
您应该注意的情况是尝试通过键值访问 std::map
,而不是在第一个位置插入值,例如
int storedValue = order[a];
在这种情况下,将创建 order[a]
的默认初始化条目,而在大多数用例中这不是您想要的。