C++指针的变换向量
C++ transform vector of pointers
嘿,我正在尝试将指向对象的指针向量转换为指向不同对象的指针向量。
我被安排了以下课程:
class Test;
class Test2 {
public:
Test2(Test*);
}
我不熟悉如何创建函子。 这是本周晚些时候考试样本考试的一部分 不过我对这个问题感到困惑。以下链接很好地解释了转换的使用,但我的问题有点不同。任何帮助都会很棒!
参考: http://www.cplusplus.com/reference/algorithm/transform/
函
子是重载operator()
函子。因此,您可以将函子定义为:
struct Test2Generator
{
//this will be called from std::transform
Test2* operator()(Test1 *param) const
{
return new Test2(param);
}
};
然后将其用作:
std::vector<Test1*> v1;
//fill v1
std::vector<Test2*> v2(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(), Test2Generator());
在 C++11 中,您不需要定义函子,而是可以使用 lambda 作为:
std::transform(v1.begin(),
v1.end(),
v2.begin(),
[](Test1 *param) { return new Test2(param); });
对转换的调用将类似于:
std::vector<Test*> src = ...
std::vector<Test2*> dst;
dst.reserve( src.size() );
std::transform( src.begin(), src.end(), std::back_inserter(dst), MyFunctor() );
其中MyFunctor()
是实现Test2* operator()( Test* )
的函数对象:
struct MyFunctor {
Test2* operator()( Test* ) const {
// implementation goes here
}
};
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 平面缓冲区可以利用向量中的 0 吗?还是其他小波比哈尔变换更好?
- 如何在 c++ 中将变换与对的向量一起使用
- 如何在 CPU 上计算向量变换?
- 可视化:如何使用R&T向量仿射变换Point3D?
- 更改std中的向量::在同一向量上变换
- 使用“变换”创建增加的向量
- 使用变换和加 () 对向量的元素进行求和和模 10^9+7<int>。有什么办法可以做到这一点吗?
- C++指针的变换向量
- std::对向量的向量进行变换
- 将 RANSAC 应用于向量<Point2f>以进行相似性变换
- 在c++中变换向量的向量
- 对包含特征向量的矩阵应用变换的更简便的方法
- std::变换一个向量