我知道这是一个非常糟糕的主意,所以有关如何有效地做到这一点的其他建议将会受到好评.
这就是事情.我有map<string,vector<string> >,我想搜索一个键并返回其相应的值(在这种情况下字符串的向量).我坚持返回(而不是仅仅迭代)的原因是我需要搜索其他向量中返回的值.
一个例子可以说明这一点:
Input:
key1 ---> {2,3,4}
key2 ---> {1}
key3 ---> {2,12,11,9}
Run Code Online (Sandbox Code Playgroud)
对于key1作为输入,应返回值为2,3,4的向量.现在需要在其他字符串向量中搜索这些2,3,4值.最有效的方法是什么?
我试过这样的事情:
vector<string> returnEdges(string key)
{
for (map<string, vector<string> >::iterator it=outgoing.begin();
it!=outgoing.end();++it)
{
if (key.compare((*it).first)==0)
{
return (*it).second;
}
}
//return string<;//what should I return here????
}
Run Code Online (Sandbox Code Playgroud)
1)如果找不到密钥,我应该如何返回空向量?
2)实现这个的最佳方法是什么?
我希望这个问题很清楚.
编辑:当我写这个问题时,我想为什么不返回迭代器?SO的人是否批准了这个想法?