Ben*_*ers 4 c++ foreach stl functor
令人困惑的标题,希望一些代码将澄清:
struct MyNestedType {
void func();
};
struct MyType {
MyNestedType* nested;
}
std::vector<MyType> vec;
// ... populate vec
// I want something approximating this line, but that doesn't use made-up C++!
std::for_each(vec.begin(), vec.end(), std::mem_fun_ref(&MyType::nested->func));
Run Code Online (Sandbox Code Playgroud)
所以基本上我想在容器的每个元素上调用一个方法,但它实际上并不是类型的方法,它是包含类型的一些方法...我知道我可以编写一个函数对象来"传递"调用但是有一些我想打电话的方法会变得混乱.
有任何想法吗?
你为什么不用简单的for-loop?
for(vector<MyType>::iterator i = vec.begin(); i != vec.end(); ++i)
i->nested->func();
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用lambda表达式或boost :: foreach
FOREACH(MyType x, vec)
x.nested->func();
Run Code Online (Sandbox Code Playgroud)
你可以使用binders和mem_funs构建你的up表达式,但这会变得非常混乱和混乱!将所有内容放在一个std :: foreach行中没有任何优势.
| 归档时间: |
|
| 查看次数: |
1187 次 |
| 最近记录: |