首页 > 解决方案 > 从类指针向量创建成员变量向量

问题描述

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

目前我使用以下内容:

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

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

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

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

标签: c++

解决方案


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

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

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


推荐阅读