我正在使用一个地图(这似乎是上一个问题之后最好的实现,带有一对键,作为传入消息的“容器”,可以根据 sourceID 和优先级进行排序,即 key: (sourceID, priority) 指向一个int 值。处理将在此地图上进行。
我刚刚遇到了一个问题 - 我需要执行类似以下伪代码的操作来随后检索消息:
map<pair<int, int>, int> mymap;
if (!mymap[make_pair(nodeID,i)].empty()) //i refers to all the priority levels
//processing occurs here to retrieve a value
但我似乎不能轻易做到。有没有办法在不运行迭代器的情况下简单地做到这一点for (i = 0; i <priority ; i++)
?我知道如果我使用等价物vector<vector<int>>
,我将能够轻松地做到这一点,但目前地图更适合我的程序。
编辑:
消息按(sourceID,优先级)排序到映射中,然后在按(destID,优先级)映射到另一个映射之前进行处理。我需要检查是否有可用于任何特定 destID 的消息,无论优先级如何,因此我正在寻找一种简单的方法来检查这一点。
我知道如果我使用 a ,如果我想检查节点 2 是否没有可用消息vector<vector<int>>
,我将能够执行类似的操作。node[2].empty()
地图有等价物吗?