Lookup-Table ohne std::map?
-
Ich hätte gerne eine Lookup-Tabelle wo ich nicht zwangsläufig aufeinanderfolgende Werte nachschlagen möchte.
z.B.
int i = table[0x83];Wie kann ich solch eine Tabelle aufbauen/initialisieren? Zur besseren Vorstellung: Ich möchte ein Tabelle haben, wo die Indexwerte 1,5,7 vergeben sind und jeweils 3,7,9 zurückgeliefert wird.

-
So ganz ohne genaueren Kontext bleibt nur die Antwort: Wie wäre es mit std::map? Oder unordered_map?
-
Dein Beispiel ist nichtssagen.
Genau dafür wäre eigentlich die std::map da. Was meinst du denn mit "nicht aufeinanderfolgende Werte" ?
Wenn es dir nur von 1,5,7 auf 3,7,9 geht (und die folgenden Werte) dann schreib dir ne Funktion die das macht...
int func(int x) { return x+2; }
-
SeppJ schrieb:
So ganz ohne genaueren Kontext bleibt nur die Antwort: Wie wäre es mit std::map? Oder unordered_map?
Reicht mein Beispiel (letzter Satz) ggfs. damit ihr mir ein minimalbeispiel zeigen könntet? Das mit der 1,5,7 (wobei da kein Muster hintersteckt)
-
std::map<int, int> init() { std::map<int, int> m; m[1] = 3; m[5] = 7; m[7] = 9; return m; } int main() { auto m = init(); int i = m[1]; return 0; }
-
Sowas hier?
int table[8]={}; table[1] = 3; table[5] = 7; table[7] = 9; int i = table[5];
-
Vielleicht suchste das hier:
#include <iostream> using namespace std; unsigned char f(unsigned char x){//berechnet irgendwie kompliziert if('a'<=x && x<='z') return 'a'+(x-'a'+13)%26; if('A'<=x && x<='Z') return 'A'+(x-'A'+13)%26; return x; } unsigned char* initTable(){//Tabelle erstellen als Array, nicht std::map static unsigned char table[256]; for(int i=0;i<256;++i) table[i]=f(i); return table; }; unsigned char* table=initTable();//Trick 17 int main() { unsigned char ch; while(cin>>ch) cout<<table[ch]; }