gpt4 book ai didi

c++ - 循环遍历以结构为键的 map 。

转载 作者:太空狗 更新时间:2023-10-29 19:51:53 24 4
gpt4 key购买 nike

我有一个结构

struct key
{
int x;
int y;
int z;
};

假设 x、y、z 可以取 1 到 10 之间的值。

我还有一张 map

std::map<key,double> myMap;

我用不同的键值填充它。

有没有一种方法可以遍历 z=5 的所有键值。即(以伪代码的形式)

 loop over myMap
double v += myMap.find({x=anything,y=anything,z=5})->second;

如果有人可以提供一些关于这是否可以实现的评论(我不想使用 boost 容器),那将是非常友好的。

最佳答案

如果您首先使用 z 对 key 结构进行排序,您可以这样做:

bool operator<( const key &k1, const key &k2 )
{
return std::make_tuple( k1.z, k1.x, k1.y ) < std::make_tuple( k2.z, k2.x, k2.y ); // z must be first
}

auto min = std::numeric_limits<int>::min();
auto end = map.lower_bound( key{ min, min, 6 } );
for( auto it = map.lower_bound( key{ min, min, 5 } ); it != end; ++it ) {
...
}

但是,如果您还需要对 x 或 y 进行迭代,则必须使用指向结构的指针为每个坐标创建单独的多重映射,或者使用 boost::multiindex

关于c++ - 循环遍历以结构为键的 map 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34270168/

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