gpt4 book ai didi

c++ - 如何比较 std::map 中的所有项目?

转载 作者:行者123 更新时间:2023-12-02 08:28:10 25 4
gpt4 key购买 nike

我想将 std::map 中的所有值相互比较。

我被困住了:对于线性容器,比如 vector ,我会循环索引i=1; v[i].isUniform(v[i-1])。但我不能用 map 做到这一点。我期待听到聪明的想法。

这是我想要完成的一些伪代码:

class MyData
{
public:
bool isUniform(const MyData& other) const
{
return this->speed == other.speed && this->ban == other.ban;
}

private:
bool ban;
int speed;
}

std::map<int, MyData> myMap;

bool allUniform = true;
for(item_1, item_2 : myMap) // how to implement this?
{
if(!item_1.isUniform(item_2))
{
allUniform = false;
}
}

最优雅(可读且高效)的方法是什么?

最佳答案

您可以使用std::all_of为此,请使用 lambda。这看起来像

bool allUniform = std::all_of(std::next(myMap.begin()), 
myMap.end(),
[&myMap](const auto& pair)
{ return myMap.begin()->second.isUniform(pair.second); });

这来自 [1, N) 并针对第一个元素调用每个元素的 isUn​​iformall_of 也是短路,因此一旦结果不一致,它就会结束。

关于c++ - 如何比较 std::map 中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59198986/

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