【发布时间】:2013-02-25 03:18:56
【问题描述】:
我正在使用映射(这似乎是previous question 之后最好的实现,带有一对键,作为传入消息的“容器”,可以根据 sourceID 和优先级进行排序,即键:(sourceID,优先级)它指向一个 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 的消息,无论优先级如何,因此我正在寻找一种简单的方法来检查这一点。
我知道,如果我使用vector<vector<int>>,如果我想检查节点 2 是否没有可用消息,我将能够执行node[2].empty() 之类的操作。有地图的等价物吗?
【问题讨论】:
-
嗯?你的伪代码对我没有意义。
mymap[make_pair(nodeID,i)]是int,你不能在上面调用empty()。你能更清楚地描述你想要做什么吗? -
你为什么要重新发布你的问题?
-
问题不同了,我现在编辑一下更清楚。
-
你需要
mymap.find(make_pair(nodeID,i)) != mymap.end()
标签: c++ dictionary containers std-pair