【问题标题】: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 吗?
  • 您能否澄清一下您发布的“问题”部分是什么?
  • 你可以用不同的方式编写它,但你的代码最终会被执行

标签: c++


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    相关资源
    最近更新 更多