从类指针的向量创建成员变量的向量

Create vector of member variables from vector of class pointers

本文关键字:向量 成员 变量 创建 指针      更新时间:2023-10-16

我有一个包含指向SomeClass实例的指针的std::vector。此类(除其他外(具有类型为SomeOtherClass的成员变量。我认为应该有一种方法(例如某种强制转换(可以有效地创建一个包含SomeOtherClass对象的新向量。

目前我使用以下:

std::vector<SomeClass*>objects = {new SomeClass(),...};
std::vector<SomeOtherClass> memberVars;
for(SomeClass* object : objects){
memberVars.pushback(object->member);
}

(不能同时创建两个向量。

编辑:问题:是否有更有效的选择来实现这一目标?

如果你需要另一个向量,你所拥有的是你能做的最好的事情。使用std::transform和插入迭代器可以使它更像C++,但很难看出该代码如何比您的简单循环更清晰。

不能将一种矢量类型强制转换为另一种矢量类型,即使它们各自的元素类型相关。

你可以尝试通过使用过滤函数迭代现有容器来消除对它的需求,这些函数使你不必在任何地方编写->member,但这实际上取决于你要做什么(我们不知道(。