比较我有一个map<string, set<string>>
,我有一个条目,这是flights["Madison"].insert("Boston");
字符串的映射,设置。值
现在我想知道我怎么能检查是否有在地图上是"Madison", "Boston"
的条目。我想不出找到这个集合中的键值是否存在的方法。
这是我迄今为止的尝试:我感觉好像我是一两条线。
typedef map<string, set<string>> TFlights;
TFlights flights;
TFlights::iterator iter, iter2;
bool found = false;
flights["Madison"].insert("Boston");
flights["Madison"].insert("Miami");
for(iter = flights.begin(); iter != flights.end(); iter++)
{
if(iter->first == "Madison" && //iter->second contains "Boston")
{
found = true;
}
}
return found;
所以你行iter-> second.find( “波士顿”)= ITER替换您的评论 - > second.end()正在通过设置,看看“波士顿”的价值或我正在寻找的东西是否在设置中? – Adam 2014-12-08 06:13:50
是的。这就是你在一组中搜索的方式。使用'find'方法。地图和集合都有对数搜索时间(即,如果您有1000个项目要搜索,则只需要10次比较)。然而,如果你为搜索编写一个for循环(就像你原来的文章所做的那样),你将击败这个优化的目的。 – PaulMcKenzie 2014-12-08 06:14:32
谢谢。我赞赏描述和例子。这是我进入C++ STL的第一步。它工作完美。我采用了你建议的对数方法,并将我的代码改为无循环。 [除了find()] – Adam 2014-12-08 06:17:09