std::map, составной ключ, перечислить в диапазоне. Как?
От: imh0  
Дата: 27.08.21 08:30
Оценка:
struct KEY
{
   int k1;
   int k2;
   int k3;
   bool operator < ( const KEY & i ) const
   {
       if ( k1 > i.k1 ) return false;
       if ( k1 < i.k1 ) return true;

       if ( k2 > i.k2 ) return false;
       if ( k2 < i.k2 ) return true;

       if ( k3 > i.k3 ) return false;
       if ( k3 < i.k3 ) return true;

       return false;       
   }
};
struct VALUE
{
    int v1;  
};

std::map <KEY,VALUE> db;

KEY i={.k1=1,.k2=1,.k3=1};
KEY from={.k1=i.k1-1,.k2=i.k2-1,.k3=i.k3-1};
KEY to = {.k1=i.k1+1,.k2=i.k2+1,.k3=i.k3+1};

auto from=db.lower_bound(from);
auto to  =db.upper_bound(to);

for ( auto j =from; j!= to; j++ )
{
   print_key(j);
}


Мне надо чтобы в перечисление попали +/- 1 по всем ключам.

==
На стеке ответа нет. И в интернете тоже, нет. Вот кстати пример того, что совсем не все есть в стеке. ))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.