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.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage