gpt4 book ai didi

C++ 转换指针 vector

转载 作者:行者123 更新时间:2023-11-27 23:23:43 26 4
gpt4 key购买 nike

嘿,我正在尝试将指向一个对象的指针 vector 转换为另一个指向不同对象的指针 vector 。

我已获得以下类(class):

class Test;
class Test2 {
public:
Test2(Test*);
}

我不熟悉如何创建仿函数。这是本周晚些时候考试样本考试的一部分,但我对这个问题感到困惑。以下链接很好地解释了 transform 的使用,但我的问题有点不同。任何帮助都会很棒!

引用: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++ 转换指针 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10884038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com