访问地图<;int,int>;用“[]` 我对C++比较陌生,我遇到了一段代码,我不太理解。我有以下未初始化的映射 map<int,int> fq

访问地图<;int,int>;用“[]` 我对C++比较陌生,我遇到了一段代码,我不太理解。我有以下未初始化的映射 map<int,int> fq,c++,dictionary,C++,Dictionary,下面的代码是我遇到的问题: ++fq[sum] sum*=2 ans+=fq[-sum] 默认情况下是否会以某种方式分配关键点?我猜是这样 ++fq[sum] sets key:1 to -1 and key:2 to -2 and so on... 但是我不知道ans+=fq[-sum]是如何工作的。是否添加了键,并将其添加到 ANS?< P>中,用C++ STD::MAP< /Cult>类型,如果用选择运算符查找不存在的键(运算符[]/COD>),则该地图将自动为您插入新的键值对。与键

下面的代码是我遇到的问题:

++fq[sum]
sum*=2
ans+=fq[-sum]
默认情况下是否会以某种方式分配关键点?我猜是这样

++fq[sum] sets key:1 to -1 and key:2 to -2 and so on...

但是我不知道
ans+=fq[-sum]
是如何工作的。是否添加了<代码>键<代码>,并将其添加到<代码> ANS?

< P>中,用C++ <代码> STD::MAP< /Cult>类型,如果用选择运算符查找不存在的键(<代码>运算符[]/COD>),则该地图将自动为您插入新的键值对。与键关联的值将是与值类型关联的默认值。对于
int
s,这是0,因此如果查找不存在的内容,则可以依靠
std::map
输入值0

例如,如果你写

++fq[sum];
如果
sum
不是
fq
中的键,则会发生以下情况:

  • 映射将插入
    sum
    作为值为0的键
  • 然后,映射返回对新创建的0值的引用
  • 该值将递增

净效应是
fq[sum]
最终为1。这是一种可移植的行为,你可以依赖它在不同的系统上工作。

< P>用C++ <代码> STD::MAP< /Cord>类型,如果你用选择运算符查找一个不存在的键(<代码>运算符[]/COD>),地图会自动为你插入一个新的键值对。与键关联的值将是与值类型关联的默认值。对于
int
s,这是0,因此如果查找不存在的内容,则可以依靠
std::map
输入值0

例如,如果你写

++fq[sum];
如果
sum
不是
fq
中的键,则会发生以下情况:

  • 映射将插入
    sum
    作为值为0的键
  • 然后,映射返回对新创建的0值的引用
  • 该值将递增

净效应是
fq[sum]
最终为1。这是一种可移植的行为,你可以依赖它在不同的系统上工作。

我不想变得很笨拙,但是你是否考虑过通过C++编译器运行代码并观察输出?这可能会让你了解正在发生的事情,比在这里提问更快。了解您通过调试器观察到的情况可能有助于回答您不确定的问题about@Tas使用C++,你必须小心,因为你可能正在做一些特定于实现的事情,或者导致不明确的行为,但仍然会给出不错的结果。即使有了观察到的行为,你也会怀疑它的行为是否得到保证。我并不是想变得很笨拙,但是你是否考虑过通过C++编译器运行代码并观察输出?这可能会让你了解正在发生的事情,比在这里提问更快。了解您通过调试器观察到的情况可能有助于回答您不确定的问题about@Tas使用C++,你必须小心,因为你可能正在做一些特定于实现的事情,或者导致不明确的行为,但仍然会给出不错的结果。即使是观察到的行为,您也可能想知道该行为是否得到了保证。