使用模板将类函数应用于对象向量
using templates to apply class functions to a vector of objects
假设我有不同对象的向量,比如D
的类型是vector< Dog >
, R
的类型是vector< Rock >
。是否有可能使用模板,所以我可以自动有所有成员函数可调用的向量?例如,如果Dog
有一个功能Bark()
,我希望D.bark()
导致所有的狗叫。
现在,显然我可以用一个新函数和一个简单的循环手工编写这种行为,但是有简单的模板制作方法吗?例如,让R.smash()
在没有我的情况下砸碎所有的石头不要显式地对循环进行编码。我试着想象语法应该是什么,它让我大吃一惊。
std::for_each(dogs.begin(), dogs.end(), std::bind(&Dog::bark, _1));
在c++ 03中,您可以使用boost::bind
代替。您可以尝试将它封装在一个单独的函数模板中,但我有一种感觉,它不会给您带来太多好处。在需要此行为的地方使用for_each
是足够清楚的。
可以这样做:
std::for_each(dog_vec.begin(),dog_vec.end(),std::mem_fun_ref(&dog::bark));
我想有更简单的方法。
相关文章:
- c++r值引用应用于函数指针
- 仅将方法应用于类的一个对象
- "std::swap"应用于这些对象时会做什么?
- 如何正确地将规则 5(或零?)应用于包含带有字符串的自定义对象向量的类
- 如何使用多态性将相同的操作应用于具有相同基类的不同对象的unordered_sets
- 将重力应用于对象
- 用于将任意成员函数应用于对象容器容器的函子
- 如何获取应用于本地工作站的组策略对象列表
- C++ 设计一个对象,使其采用变量值和规则来应用于它们
- 调用常用方法/将常用函数应用于具有不同类型对象的不同容器
- 如何将不同的实例化应用于相同的对象名称
- c++:应用于向量的STL算法也适用于其他容器对象
- C++对对象的向量进行迭代,并将STL算法应用于成员变量
- 使用模板将类函数应用于对象向量
- 将函数应用于包含的对象,前提是它们派生自基类型
- 快速排序应用于指向对象的指针向量-无限循环
- 我如何才能最好地将' __attribute__ ((unused)) '应用于这些自动生成的对象
- 只有一种材质应用于多个对象
- 将boost::fusion::for_each应用于具有可变函数对象的boost::fusion::vector
- 在向量/列表中,您是否真的将其应用于对象?(C++)