遍历C++的map成员/记C++ map的一个小错误

在某个查询数据库的接口中,查询的结果是放到一个map中的,其中key表示label,而value表示数据库中这个label包含多少条,其中数据库中的真实信息是这样的,

遍历C++的map成员/记C++ map的一个小错误_第1张图片

 但是用下面的语句打印的时候,

        printf("-----------------------------goodsList.size():%d\n", goodsList.size());
        for(int i=0; i < goodsList.size(); i++)
        {
            printf("goodsList[%d]:%d\n", i, goodsList[i]);
        }

其中的goodsList的size打印出来是21,但是for循环里面打印出来的结果如下,

遍历C++的map成员/记C++ map的一个小错误_第2张图片

 size明明是21,但是打印出来却多了很多0,原因在于key不是连续的,当i等于20的时候,实际上map里面是不存在key为20的元素的,  goodsList[20]就会在map中增加这一元素,增加了之后size又变化了,一直这样,直到33.

用下面的语句打印就没问题了,

        for(auto const& v : goodsList)
        {
            std::cout<<"goodsList:["<"]: "<std::endl;
        }

你可能感兴趣的:(遍历C++的map成员/记C++ map的一个小错误)