Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.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++ 我在映射C+;中得到count()的意外行为+;_C++_C++11_C++17 - Fatal编程技术网

C++ 我在映射C+;中得到count()的意外行为+;

C++ 我在映射C+;中得到count()的意外行为+;,c++,c++11,c++17,C++,C++11,C++17,正在将count的值增加1,同时nums\u map.empty()=0。因为std::map::operator[]的工作方式有点奇怪。发件人: 返回对映射到与键等效的键的值的引用,如果该键不存在,则执行插入 因此,如果密钥不存在,它将创建一个新的密钥对。这正是这里发生的事情 int a = nums_map[0]; #包括 #包括 int main(){ 使用名称空间std; map nums\u map;//nums\u map=={} cout value在该键处初始化一个不存在的元素

正在将count的值增加1,同时
nums\u map.empty()
=0。

因为
std::map::operator[]
的工作方式有点奇怪。发件人:

返回对映射到与键等效的键的值的引用,如果该键不存在,则执行插入

因此,如果密钥不存在,它将创建一个新的密钥对。这正是这里发生的事情

int a = nums_map[0];
#包括
#包括
int main(){
使用名称空间std;
map nums\u map;//nums\u map=={}
cout value在该键处初始化一个不存在的元素。这就是允许您初始化
a
的原因。
int a = nums_map[0];
#include <iostream>
#include <map>

int main() {
    using namespace std;
    map<int, int> nums_map;            // nums_map == {}
    cout << nums_map.count(0) << endl; // 0, because the map is empty
    int a = nums_map[0];               /* a new key/value pair of {0, 0} is
                                          created and a is set to nums_map[0],
                                          which is 0 */
    cout << nums_map.count(0) << endl; // Since there is one key 0 now, this shows 1
    cout << nums_map[0];               // As shown previously, nums_map[0] is 0
    return 0;
}