1

您好我正在尝试编写一个从文件中读取数据然后将其保存在内存中的函数。此内存将需要 ax 和 ay 值来识别。它可能不是线性的,不同的 x 和 y 值之间可能会有很大的跳跃,并且值的数量是未知的,这不包括使用多维数组。

我想使用 std::map ,因为它可以满足我的需要,但它不支持多个键值。我还能用什么来存储数据,或者有没有办法合并 X 和 Y 值以便能够在地图容器中使用?

4

3 回答 3

3

Make a pair of the x and y values, and use that as the key:

std::map<std::pair<int, int>, whatever>

Note that as it stands, this will treat the x values as more significant than the y values if you traverse the map in order. If you want the y values to be more significant, you'd want to put them first in the pair.

于 2013-02-19T17:04:21.327 回答
2

You should use an std::pair as the key to your map:

std::map<std::pair<int, int>, value_type> m;

You can insert into the map using:

m[std::make_pair(0, 0)] = some_value;

If you don't care about the order of your elements and would like faster retrieval and insertion, try a std::unordered_map instead.

于 2013-02-19T17:04:09.537 回答
1

尽管您可以按照其他人的建议使用 std::pair ,但我会认真考虑制作一个包含密钥数据成员的简单类。它提高了可读性,并且如果需要,还可以更容易地使用 3rd、4th、... 成员对其进行扩展。

如果你从 std::pair 开始,然后你想添加第三个元素,你可能会想要移动到 std::tuple,但这会导致代码不可读。

只需创建一个关键类,并给它一个体面的构造函数(每个数据成员一个参数)。

于 2013-02-19T17:09:09.053 回答