gpt4 book ai didi

c++ - 在 vector 结果记录器中记录元组

转载 作者:行者123 更新时间:2023-11-28 02:03:20 25 4
gpt4 key购买 nike

我在 OMNeT++ 4.4 中运行模拟,其中我的节点发出一个结果,该结果本质上是一个元组。元组的值是相互依赖的,所有节点都会发出它们;即,在单个 simtime 中发出了几个这样的元组。元组不能被“压缩”为单个 double 值。

我想将这些元组记录在一个 vector 中。有没有办法发出用于统计收集的数据结构并将其记录在 OMNeT++ 创建的 *.vec 文件中?我不关心 NED 文件中可用于此特定信号的统计函数。

举个简单的例子,假设我有

typedef boost::tuple<boost::DateTime, bool, Unit::Watt, Unit::VAr> MyTuple;

某处作为我要发出的信号的数据类型。有没有办法拥有

MyTuple myTuple( /* ... data ... */ );
emit(mySignal, myTuple);

在我的源代码中并将其记录在规则的 .vec 结果文件中,例如:

vector 1 MyNodeName MyResultVectorName TV
1 14.126 2013-01-22T23:22:19+10:00 true 125300 12000

如果不可能,仍然使用 OMNeT 的信号机制但自己创建输出文件的最佳方法是什么?

最佳答案

默认情况下 OMNeT++ 不能保存元组(因为内置工具无论如何都不能处理它),但是信号可以携带一个 cObject ,这与标量值的传输方式类似。从 cObject 派生你的元组,你将能够用信号发射它。显然,您还必须编写并注册一个可以处理给定数据类型并写入文件的 ResultRecorder(派生自 cResultRecorder)。

关于c++ - 在 vector 结果记录器中记录元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com