gpt4 book ai didi

c++ - 如何有效地处理满足给定谓词的 vector 中的所有项?

转载 作者:行者123 更新时间:2023-12-01 14:40:00 25 4
gpt4 key购买 nike

对于C++项目,我有一个带有自定义对象的 vector ,这些对象具有一种getX()方法来获取其x值。

我有一个方法,需要遍历属性x在startXendX之间的所有元素。

遍历这些项目的正确方法是什么?

目前我有:

int startX = 20;
int endX = 30
for(SomeClass x: someObject->getObjects())
{
if(x->getX() > startX && x->getX() < endX)
{
//do something
}
}

它可以正常工作,但是我记得在一个古老的C++课中,有一种方法可以更有效地循环遍历元素。

我记得类似的东西:
int startX = 20;
int endX = 30
for(SomeClass x : find(someObject->getObjects(), x, x->getX() > startX && x->getX() < endX)
{
//do something
}

我只在需要的元素上进行迭代,而检查不再在循环内。

编辑:
为了避免讨论该部分,我将qt foreach循环更改为for循环。

最佳答案

您是否在考虑 std::ranges::filter (的先驱)?

int startX = 20;
int endX = 30;
auto inrange = [startX, endX](auto x){ return x->getX() > startX && x->getX() < endX; }
for(SomeClass x: std::ranges::filter(someObject->getObjects(), inrange))
{
//do something
}

关于c++ - 如何有效地处理满足给定谓词的 vector 中的所有项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59678110/

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