我试图更好地理解有关使用带有对象和std::for_each()
循环的lambda函数的一些基本概念。
我正在尝试将const int
的{{1}}内容传递到someObjectVector.end()->someObjectVectorMethod()
,但找不到实现它的方法。
我还想使用那些迭代器来设置i
循环的参数。这是不可能的吗?还是我在语法上错误地对待了这种方法?
std::for_each()
答案 0 :(得分:0)
您的语法肯定是错误的。
作为输入,std::for_each()
期望
由2个输入迭代器表示的元素范围
一元函数对象,该范围内的每个元素都将作为唯一输入参数传递给该对象。
在您的代码中,someObjectVectorMethod()
和getSomeObjectVectorData()
不是迭代器,并且您的lambda不接受向量元素作为输入。
您要尝试用代码完成什么?您可能需要的是这样的东西:
std::vector<YourObjectType> someObjectVector;
...
std::for_each(someObjectVector.begin(), someObjectVector.end(),
[](YourObjectType &obj) {
obj.setSomeObjectVectorData(...);
}
);
或者:
std::vector<YourObjectType*> someObjectVector;
...
std::for_each(someObjectVector.begin(), someObjectVector.end(),
[](YourObjectType *obj) {
obj->setSomeObjectVectorData(...);
}
);
取决于someObjectVector
在代码中的实际声明方式。
调整上述lambda以适合您的实际需求。