Я предполагаю, что вы не хотите искать весь набор: просто используйте std::set<std::string>::lower_bound()
и повторяйте, пока не найдете std::string
, который не имеет желаемого префикса:
std::string const prefix("bab");
for (std::set<std::string>::const_iterator it(setStrings.lower_bound(prefix));
it != setStrings.end() && it->find(prefix) == 0; ++it) {
std::cout << "prefixed: '" << *it << "'\n";
}
Если выпросто хочу узнать, есть ли одна строка с соответствующим префиксом, вы можете использовать условие как в цикле.