Если у вас много чтений и меньше записей, вы можете использовать вектор как карту. Это очень распространено, потому что lower_bound
более эффективен, чем map
и использует меньше места в памяти:
bool your_less_function( const your_type &a, const your_type &b )
{
// based on keys
return ( a < b );
}
...
std::vector<your_type> ordered-vector;
Когда вы добавляете значения:
...
// First 100 values
ordered-vector.push_back(value)
...
// Finally. The vector must be sorted before read.
std::sort( ordered-vector.begin(), ordered-vector.end(), your_less_function );
Когда запрашивать данные:
std::vector<your_type>::iterator iter = std::lower_bound( ordered-vector.begin(), ordered-vector.end(), value, your_less_function );
if ( ( iter == ordered-vector.end() ) || your_less_function( *iter, value ) )
// you did not find the value
else
// iter contains the value
К сожалению, это заказано, но очень быстро.