从类指针向量创建成员变量向量
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++,但很难看出该代码会比您的简单循环更清晰。
您不能将一种向量类型转换为另一种,即使它们各自的元素类型是相关的。
您可以尝试通过使用过滤功能迭代现有容器来消除对它的需求,这样您就不必在任何地方写->member
,但这实际上取决于您要做什么(我们不这样做)知道)。
【讨论】:
以上是关于从类指针向量创建成员变量向量的主要内容,如果未能解决你的问题,请参考以下文章