C++,Map <>结构,但有Gaps

Nac*_*low -1 c++ dictionary

我试图用一个类在C++中创建一个字典<key,value>.

我在网上发现地图是我被禁止使用的课程.

但是,当我尝试使用Map时,它会填补键之间的间隙.

这是一个问题,因为键是数字,但它们非常稀疏.

所以在一组中我可能有[1,20,30000,70000000].我希望我的地图只存储这4个值,而不是每个值在1到70000000之间.

#include <iostream>
#include <map>

using namespace std;

int main()
{
    map<int,int> a = {{1,-1},{20,200}}; // I want this to just store {1,20}
    for(int x = 0; x < a.size(); x++) cout << a[p(x)] << ","; //however, when I print it I get [0,1..,19,20]
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,     
Run Code Online (Sandbox Code Playgroud)

是否有一些解决方法可以避免C++"填补空白"或STD中可用于此目的的任何其他类?

app*_*ple 6

map::operator[]为你创建条目(并增加它size()).如果您只想迭代std::map,请使用它的迭代器.


for(auto& entry : a) cout << entry.second << ",";