std::vector<Face*> faces ; 如何用lambda表达式 遍历
时间: 2024-04-08 11:33:44 浏览: 11
使用lambda表达式遍历std::vector<Face*> faces的方法如下:
```cpp
#include <iostream>
#include <vector>
class Face {
public:
Face(int id) : id(id) {}
int getId() const { return id; }
private:
int id;
};
int main() {
std::vector<Face*> faces;
faces.push_back(new Face(1));
faces.push_back(new Face(2));
faces.push_back(new Face(3));
// 使用lambda表达式遍历faces
std::cout << "遍历faces:" << std::endl;
for_each(faces.begin(), faces.end(), [](Face* face) {
std::cout << face->getId() << " ";
});
std::cout << std::endl;
// 释放Face对象的内存
for (const auto& face : faces) {
delete face;
}
return 0;
}
```
在上述示例中,我们首先定义了一个Face类,其中包含一个成员函数getId()用于返回Face对象的id。然后,我们创建了一个std::vector<Face*> faces,并向其添加了一些Face对象。
使用lambda表达式遍历faces的语法是`for_each(faces.begin(), faces.end(), lambda表达式)`。在lambda表达式中,我们以Face*类型的参数face为输入,并输出face->getId()。
请注意,由于faces中存储的是Face*指针,我们在程序结束前需要手动释放这些指针所指向的内存。
希望这个例子能帮助你理解如何使用lambda表达式遍历std::vector<Face*> faces。如果你还有其他问题,请随时提出。