我有一系列要按名称搜索的Task对象。我可以将指针存储在任何结构中。我想允许部分匹配(例如“杂货”匹配“购买杂货”)。
我已经考虑过使用unordered_multimap和equal_range,如下所示,但这只允许精确匹配。
class Task_List {
...
std::unordered_multimap<std::string, std::shared_ptr<Task>> tasks_by_name;
...
};
void Task_List::search() {
// Prompt for string_to_search
typedef unordered_multimap<string, shared_ptr<Task>>::iterator multi_iter;
pair<multi_iter, multi_iter> search_results;
search_results = tasks_by_name.equal_range(string_to_search);
...
}
是否有一种方法可以不同地定义运算符或指定某些函数以允许部分匹配?使用不同的数据结构或采用不同的方法来有效地实现这一目标会更好吗?
谢谢!