【发布时间】:2010-11-09 21:31:56
【问题描述】:
我有一个std::map,我用它来存储 x 和 y 坐标的值。我的数据非常稀疏,所以我不想使用数组或向量,这会导致大量内存浪费。我的数据范围从-250000到250000,但我最多只有几千个点。
目前我正在创建一个带有两个坐标的std::string(即"12x45")并将其用作键。这似乎不是最好的方法。
我的其他想法是使用 int64 并将两个 int32 塞入其中并用作键。
或者使用具有两个坐标的类。对用作 key 的类有什么要求?
最好的方法是什么?我宁愿不使用地图。
【问题讨论】:
-
您可以轻松合法地将两个 long 填充到一个 _int64 中,或者如下面的回答,一个序列号、PID 和 NodeId。由于 MAX_PID 在 Linux 上为 (1 的任何值
-
假设您不想按特定顺序迭代映射,请使用像 std::unordered_map 这样的哈希映射。效率更高,尤其是当您拥有这么多值时。
标签: c++ dictionary stl key stdmap