gpt4 book ai didi

c++ - 允许通过不同维度进行迭代的二维 map 类数据结构

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:16:11 24 4
gpt4 key购买 nike

我有以下 2D map ,它允许我先遍历外部 map ,然后遍历内部 map ,如下所示:

map<string, map<string, double>> grid;

for (map<string, map<string, double>>::iterator person = grid.begin(); person != grid.end(); ++person)
{
personTotal = 0;
for (map<string, double>::iterator product = person->second.begin(); product != person->second.end(); ++product)
{
personTotal += product->second;
}
personFunction(person->first, personTotal);
}

现在我想先遍历内部 map ,然后再访问外部 map 。但是,我不知道该怎么做。以下是我要实现的目标的描述:

map<string, map<string, double>> grid;

for (??? product = ???; product ???; ++product)
{
productTotal = 0;
for (??? person = ???; person ???; ++person)
{
productTotal += grid[person->first][product->first];
}
productFunction(product->first, productTotal);
}

是否可以先迭代内部映射然后迭代外部映射?如果没有,我想我需要更改我的数据结构。什么数据结构可以让我在任一维度上自由迭代(以字符串为键)?

最佳答案

map 中的 map 无法解决问题,因为您可以迭代一个维度(我们称它们为行)但不能迭代另一个维度(我们称它们为列)。

解决方案是使用类似数组的结构(因此您可以在行或列上迭代),其中仅使用您拥有数据的 [row,column] 点。这通常称为 sparse matrix .

例如,您可以使用 Boost ublas mapped-matrix .

查看此问题以获取更多替代方案:Is there a Boost (or other common lib) type for matrices with string keys?

关于c++ - 允许通过不同维度进行迭代的二维 map 类数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33308606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com