Я знаю, что это очень плохое представление, поэтому другие предложения о том, как это сделать эффективно, будут хорошо получены.
Вот вещь. У меня есть карта <1198498]
, я хочу искать ключ и вернуть соответствующее значение (вектор строк в этом случае). Причина, по которой я настаиваю на возвращении (а не просто итерации), мне нужно искать значения, возвращаемые в некоторых других векторах.
Примером сделает это понятно:
Input:
key1 ---> {2,3,4}
key2 ---> {1}
key3 ---> {2,12,11,9}
для 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????
}
1) Как я должен вернуть пустой вектор в случае, ключевой ключ не найден?
2) Какой лучший способ реализовать это ?
Я надеюсь, что вопрос ясен.
Править: Как я написал вопрос, я думал, почему не вернуть итератор? Есть ли люди, так что дают свое одобрение для этой идеи?