有一个map
结构的map<string, vector<string>> buses;
,我有一个string
,所以我需要找出如何检查string
中包含的map
向量。
string stop;
cin >> stop;
if (buses.find(stop) != buses.end()) {
cout << "Yes";
} else {
cout << "No";
}
当我得到一个stop
字符串时,我需要检查map的值(不是键,为了更精确地在map.second中),一个字符串等于stop
字符串,如果是,我需要打印出所有包含stop
元素值的键。 { {"bus#1", {"stop#1", "stop#2", "stop#3"}}, ... }
答案 0 :(得分:1)
一种方法是遍历所有地图元素,然后在值向量上使用std::find
。不过,这确实效率很低。
相反,您应该使用std::multimap<std::string, std::string>
(如果不需要排序,则使用std::unordered_multimap
),并使用Stops作为键。然后,在该键中添加所有使用所述车站的公交车,如果要获取该车站的所有公交车,请使用find
。
答案 1 :(得分:-1)
我想这就是你想要做的。
#include <map>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
map<string, vector<string>> buses;
buses["some stop"] = vector<string>();
if (buses.find("some stop") != buses.end()) {
cout << "Yes";
}
else {
cout << "No";
}
}
您确定map
是您要用于此任务的数据结构吗?
否则,如果您只想查看停靠点是否在数据结构中,则可能要签出std::set
。