定义一个类obj和函数对象output,用算法for_each输出对象向量。测试代码如下: int main() { vector<int> vec; vec.push_back(obj(1)); vec.push_back(obj(2)); for_each(vec.begin(),vec.end(),output()); return 1; }
时间: 2024-03-06 07:46:10 浏览: 67
好的,我知道你的问题了。根据你给出的代码,我可以写出如下的类 `obj` 和函数对象 `output`:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class obj {
public:
obj(int val) : m_val(val) {}
int get_val() const { return m_val; }
private:
int m_val;
};
class output {
public:
void operator()(const obj& o) const {
cout << o.get_val() << " ";
}
};
int main() {
vector<obj> vec;
vec.push_back(obj(1));
vec.push_back(obj(2));
for_each(vec.begin(), vec.end(), output());
return 1;
}
```
这个程序定义了一个类 `obj`,它有一个整数成员变量 `m_val`,以及一个函数成员 `get_val()`,用于获取该成员变量的值。另外,还定义了一个函数对象 `output`,它的 `operator()` 函数会输出 `obj` 对象的值。在 `main()` 函数中,创建了一个 `vector<obj>` 对象 `vec`,并向其中添加了两个 `obj` 对象。然后,使用 `for_each()` 算法和 `output` 函数对象输出了向量中的所有元素。
运行这个程序会输出 `1 2`,这是 `obj` 对象的成员变量值。
阅读全文