我正在尝试创建基本的搜索功能。现在,我可以设置函数来接受三个参数:map<string, vector<string>>
,const string& key
和bool unique
。
我的目标是让query
检查key
是否在地图上,如果与bool unique = false
一起在地图中,则只输出与键,重复项和所有键相关的所有值。
但是,如果bool unique = true
我的后半部分完全按需要工作,但是我在输出唯一值方面很挣扎。我该怎么办?是否可以在不创建新矢量或更改地图的情况下这样做?
很抱歉,如果有任何不清楚的地方,我很乐意澄清。谢谢。
void query(const map<string, vector<string>>& map, const string& key, bool unique) {
const auto pair = map.equal_range(key);
if(map.count(key)){
for( auto iter = pair.first ; iter != pair.second ; ++iter ){
for( const auto& str : iter->second ) {
if (!unique){
cout << " " << key << " ";
cout << str << "\n";
} else if (unique) {
// output key + unique values
}
}
}
} else {
cout << "<Not found>\n";
}