c++ - 从类指针向量创建成员变量向量
问题描述
我有一个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++ std::transform
,但很难看出该代码会比您的简单循环更清晰。
您不能将一种向量类型转换为另一种,即使它们各自的元素类型是相关的。
您可以尝试通过使用过滤功能迭代现有容器来消除对它的需求,这些功能可以阻止您在->member
任何地方编写,但这实际上取决于您要做什么(我们不知道)。
推荐阅读
- function - 如何从不以 vec 作为参数的回调内部将值存储在 Vec 中?
- angular - 无法删除角度日历中的事件计数
- django - Django-过滤管理器
- azure-data-factory - 使用 ADF Pipeline RUN ID 作为表名
- node.js - 从终端查询 MongoDB 数据库:[MongoError]: failed to connect to server
- junit - 在 JUnit 测试中创建实例后,如何在 Camunda 中的实例中设置变量?
- java - 使用 Java 应用程序运行项目时未找到 Rest API 响应 404
- javascript - 在 FullCalendar 4 的 dateclick 上打开模式
- python - 如果被杀死,则重新启动 Python 脚本
- reactjs - 从 NPM 添加 bootrap-react 会在 Visual Studio 中创建另一个包锁定文件