如何动态地投三分球的向量之间? [英] how do I dynamically cast between vectors of pointers?
本文介绍了如何动态地投三分球的向量之间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有:
class T {};
class S: public T {};
vector<T*> v;
vector<S*> w;
transform(v.begin(), v.end(), dynamic_cast_iterator<S*>(w.begin()));
但是,当然,dynamic_cast_iterator不存在
But, of course, dynamic_cast_iterator doesn't exist.
推荐答案
下面是一个解决方案(使用的升压拉姆达):
Here is one solution (using boost lambda):
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/casts.hpp>
#include <algorithm>
#include <iterator>
#include <iostream>
namespace bll = boost::lambda;
struct A { virtual ~A() { } };
struct B : A { void f() { std::cout << "hello, world" << std::endl; } };
int main() {
std::vector<A*> a; a.push_back(new B);
std::vector<B*> b;
std::transform(a.begin(), a.end(), std::back_inserter(b),
bll::ll_dynamic_cast<B*>(bll::_1));
b[0]->f();
delete a[0];
}
这篇关于如何动态地投三分球的向量之间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文