Estoy usando un C++ std::multimap
y tengo que repetir dos claves diferentes. ¿Hay una forma eficiente de hacer esto que no sea la creación de dos rangos y el bucle sobre esos rangos por separado?std :: multimap obteniendo dos rangos
Esta es la forma en que estoy haciendo ahora:
std::pair<std::multimap<String, Object*>::iterator,std::multimap<String, Object*>::iterator> range;
std::pair<std::multimap<String, Object*>::iterator,std::multimap<String, Object*>::iterator> range2;
// get the range of String key
range = multimap.equal_range(key1);
range2 = multimap.equal_range(key2);
for (std::multimap<String, Object*>::iterator it = range.first; it != range.second; ++it)
{
...
}
for (std::multimap<String, Object*>::iterator it2 = range2.first; it2 != range2.second; ++it2)
{
...
}
¿por qué crees que no es eficiente? –
Esta es la primera vez que uso multimap, así que no estoy muy familiarizado con ellos. Haré mucho trabajo en esos bucles y me pregunto si hay otra operación en la que puedas obtener dos rangos al mismo tiempo o algo así. –
¿Puedes dar un ejemplo de teclas donde las teclas se superponen, pero no se igualan? Tal vez mi cerebro está empapado, pero parece que un simple control de igualdad en las teclas lo haría. Tiene más sentido para mí si tienes límites inferiores y superiores separados para cada consulta. –