Сначала я расскажу конкретный случай, и мне бы хотелось узнать, можно ли применить его к общей проблеме.возвращение набора ключей на карте, соответствующей критериям
Скажем, у меня есть карта. И я хочу, чтобы все ключи соответствовали определенным критериям. Например, все ключи, содержащие «COL». Моя наивная реализация будет
template<typename T>
void Filter (map<string, T> & m, std:set<string> & result, const std::string& condition)
{
for(map<string,string> iter=m.begin();iter!m.end();iter++)
{
std::string key=iter->first;
size_t found=key.find(condition);
if (found!=string::npos)
result.insert(key);
}
}
Каков наилучший способ реализации этого?
Кроме того, что является хорошим способом реализации общей проблемы, когда я хочу фильтровать карту с использованием альгос?
Я пытался реализовать это не используя импульс и не удалось. Я имею в виду просто remove_copy_if и вставку. Есть идеи? –
Хм вам нужно будет написать свой собственный обходчик итератора ввода, я думаю. Я не могу придумать другой способ сделать это. –
Другая идея может заключаться в использовании преобразования и возвращении пустой строки в случае отклонения. но это двусмысленно, если игла - пустая строка :( –