嘿,我试图将一个对象的指针向量转换为另一个对象的指针向量。

我获得了以下课程:

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); });

关于c++ - 指针的C++转换 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10884038/

10-13 08:18