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

Posted

技术标签:

【中文标题】从类指针向量创建成员变量向量【英文标题】:Create vector of member variables from vector of class pointers 【发布时间】:2020-06-09 17:54:32 【问题描述】:

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

目前我使用以下:

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

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

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

编辑:问题:有没有更有效的选择来实现这个目标?

【问题讨论】:

您现在的代码有什么问题?您希望能够从memberVars 修改objects 指向的对象之一的SomeOtherClass 吗? 您能否澄清一下您发布的“问题”部分是什么? 你可以用不同的方式编写它,但你的代码最终会被执行 【参考方案1】:

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

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

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

【讨论】:

以上是关于从类指针向量创建成员变量向量的主要内容,如果未能解决你的问题,请参考以下文章

向量中不存在 C++ 字符串成员变量

删除向量的元素

在向量成员变量中存储线程触发断点

将指针推回指针向量是不是存在内存泄漏?

在构造函数中初始化成员变量二维向量

无法调用结构内部的成员函数指针