Теперь я знаю только, что на одной карте есть несколько записей с одним и тем же префиксом "head_". Как извлечь все эти записи, если я не знаю их точных ключей на этой карте? Есть идеи?
Вам придется прокручивать карту. Однако вы можете std::map::lower_bound
найти свою отправную точку, вызвав std::map::lower_bound
с ключом, равным вашему желаемому префиксу.
void extract_keys(const std::map<std::string, int>& some_map){
auto iter = some_map.lower_bound("head_");
while (iter->first.find("head_") == 0){
//do things with key, value pair
++iter;
}
}
Код выше должен работать, но я признаю, что не тестировал его. (Любые ошибки должны быть тривиально фиксируемыми)
upper_bound("head_zzzzzzz")
если можете предположить, что самый длинный действительный ключ не будет содержать больше Z, чем любая строка, которую вы используете для поиска, но тогда вам все равно придется перебирать эти два итератора.
map.lower_bound("head_")
затем итерируйте, пока не найдете первый ключ, который не соответствует.equal_range
чтобы дать вам все с префиксом «head_»?