So erstellen Sie einen sortierten Mapping-Integer-Index mit Vorlagen
Ich habe die Datenstruktur:
template <int...I> struct index {};
template <typename...T> struct data {};
template <int I, int J> struct X
{
static constexpr int i = I;
static constexpr int j = J;
};
typedef data< X<0,4>, X<1,2>, X<2,1>, X<1,6>, X<1,3> > data_t;
WoDate enthält keine Duplikate und die Indizes J sind klein und liegen zwischen 0 und 31.
Ich möchte einen statischen Index erstellen, der die Position in @ enthälDate von allen X mit Index I gleich einem gegebenen Wert (z. B. I = 1), sortiert nach Index J. Es ist das "Sortier" -Bit, das ich schwierig finde.
Zum Beispiel möchte ich eine Klasse build_index so implementieren, dass:
typedef build_index<1,data>::type_t index_t;
erzeugt das Gleiche wie:
typedef index<1, 4, 3> index_t;
was die Positionen in @ widerspiegeDate der durch J geordneten Elemente X (1, J): X (1,2) bei Daten (1), X (1,3) bei Daten (4), X (1,6) bei Daten (3)
Ich würde es vorziehen, die STL nicht zu verwenden, da sie für gcc-avr nicht verfügbar ist, obwohl ich ausgewählte Snippets portieren könnte.