vik*_*raj 5 c++ function vector
假设有一个类对象的向量.
vector<Object1> vec;
Run Code Online (Sandbox Code Playgroud)
说,Object1
有一个成员函数void foo(Object2*)
.
我想做以下事情:
for(int i=0; i<vec.size(); i++) {
vec[i].foo(obj2);
}
Run Code Online (Sandbox Code Playgroud)
如何在不使用显式循环的情况下完成此操作?
TR1/C++ 11最简单:
#include <vector>
#include <functional>
#include <algorithm>
struct Object2{};
struct Object1 {
void foo(Object2*) {}
};
int main() {
std::vector<Object1> vec;
Object2 obj2;
std::for_each(vec.begin(), vec.end(), std::bind(&Object1::foo, std::placeholders::_1, &obj2));
}
Run Code Online (Sandbox Code Playgroud)
但你也可以使用std::for_each
与std::bind2nd
和std::mem_fun_ref
如果这不是一个选项:
std::for_each(vec.begin(), vec.end(), std::bind2nd(std::mem_fun_ref(&Object1::foo), &obj2));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3798 次 |
最近记录: |