![](/img/trans.png)
[英]Initialize a vector of classes that have member pointers to another class' member variables
[英]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.