如何在指针向量之间动态转换?
我有:
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 不存在。
I have:
class T {};
class S: public T {};
vector<T*> v;
vector<S*> w;
transform(v.begin(), v.end(), dynamic_cast_iterator<S*>(w.begin()));
But, of course, dynamic_cast_iterator doesn't exist.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一种解决方案(使用 boost lambda):
Here is one solution (using boost lambda):
您可以使用
boost::transform_iterator
。 不过,它必须在调用transform
时应用于源迭代器,而不是目标迭代器。You could write you own
dynamic_cast_iterator
usingboost::transform_iterator
. It has to be applied to the source iterators in a call totransform
, though, not the target iterator.