C++ 电路交换的数据结构?

C++ 电路交换的数据结构?,c++,data-structures,maps,C++,Data Structures,Maps,我想创建如下内容: 我有一个模块,可以对消息流执行类似“电路切换”的操作。也就是说,它有一个输入端口和多个输出端口。消息到达输入端口后,将根据某些逻辑选择输出端口(在问题的上下文中,逻辑并不重要)。检查输出端口上是否有任何正在进行的消息传输(对于第一条消息,不会有任何消息)。若并没有传输,消息将被发送到该输出端口,否则,它将保持在该特定输出端口的队列中。我需要确定此通信的数据结构。请指教 我的想法是要有一张哨站和相应队列的地图 queue<message> m_incoming_qu

我想创建如下内容:

我有一个模块,可以对消息流执行类似“电路切换”的操作。也就是说,它有一个输入端口和多个输出端口。消息到达输入端口后,将根据某些逻辑选择输出端口(在问题的上下文中,逻辑并不重要)。检查输出端口上是否有任何正在进行的消息传输(对于第一条消息,不会有任何消息)。若并没有传输,消息将被发送到该输出端口,否则,它将保持在该特定输出端口的队列中。我需要确定此通信的数据结构。请指教

我的想法是要有一张哨站和相应队列的地图

queue<message> m_incoming_queue;
typedef map<outport*,m_incoming_queue> transaction_map
队列m_传入队列;
typedef映射事务\ u映射
如果这是一个好的解决方案,我想知道如何在运行时创建队列?如中所述,我不知道会有多少个输出,我根据需求创建输出。

可能类似于:

// At beginning
typedef queue<message> MessageQueue
typedef map<outport*, MessageQueue> transaction_map
transaction_map tm()  // Create the transaction map


// On receipt of each message
// (Some logic that determines outport* op and message m)
if(tm.count(*op) == 0)
{
    // There are no queues yet, create one and insert it
    tm.insert(transaction_map::value_type(*op, MessageQueue()))
}
// There is already a queue created, so add to it
tm[*op].push(m)
//开始时
typedef队列MessageQueue
typedef映射事务\ u映射
事务映射tm()//创建事务映射
//收到每封邮件后
//(确定输出端口*op和消息m的某些逻辑)
如果(tm.count(*op)==0)
{
//还没有队列,请创建一个并插入它
插入(事务映射::值类型(*op,MessageQueue()))
}
//已经创建了一个队列,请添加到其中
tm[*op].推力(m)

也许您想看看一个非常好的轻量级消息框架。