繁体   English   中英

从 class 指针向量创建成员变量向量

[英]Create vector of member variables from vector of class pointers

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

目前我使用以下内容:

std::vector<SomeClass*>objects = {new SomeClass(),...};
std::vector<SomeOtherClass> memberVars;

for(SomeClass* object : objects){
    memberVars.pushback(object->member);
}

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM