在其他类中,要逐个过去容器中的元素进行处理,而不是让总有容器的类自己遍历一遍。
时间: 2024-04-16 10:27:49 浏览: 64
如果您希望在其他类中逐个处理容器中的元素,而不是让包含容器的类自遍历,您可以将容器的历操作封装在一个函数中,并将该函数作为参数传递给其他类。以下是一个示例:
```cpp
#include <vector>
class MyClass {
private:
std::vector<int>Vector;
public:
void AddElement(int element) {
myVector.push_back(element);
}
void ProcessElements(std::function<void(int)> processFunc) {
for (int element : myVector) {
processFunc(element);
}
}
};
class OtherClass {
public:
void ProcessMyClass(MyClass& myClass) {
// 定义一个处理函数
auto processFunc = [](int element) {
// 进行元素处理操作
// ...
};
// 调用 MyClass 的函数,并传递处理函数作为参数
myClass.ProcessElements(processFunc);
// 进行其他操作
}
};
```
在上述示例中,`MyClass` 类中的 `ProcessElements` 函数接受一个函数对象 `processFunc` 作为参数。该函数对象定义了如何处理容器中的每个元素。在 `OtherClass` 类中的 `ProcessMyClass` 函数中,我们定义了一个处理函数 `processFunc`,然后将其作为参数传递给 `myClass.ProcessElements` 函数。
通过这种方式,`OtherClass` 类可以通过传递一个处理函数来告诉 `MyClass` 类如何处理容器中的每个元素。这种方式允许其他类在不了解容器具体实现细节的情况下,对容器中的元素进行逐个处理。
阅读全文