2-dimensionales statisches Array

Z

zwette

Ich habe folgendes Problem:

Ich benötige in meinem Programm die Berechnung des vollständigen elliptischen Integrals erster Art. Da die Berechnung zu kompliziert ist, dachte ich mir, ich tippe aus einem Mathebuch einfach die Integraltabelle ab (reicht auch für meine Zwecke). So, nun zum eigentlichen Problem:

Die Integaltabelle ist eine 2x90 große Tabelle mit float-Werten. Erste Spalte ist Alpha, der Winkel in Grad (°) von 0-90 in 1°-Schritten, die zweite Spalte der zugehörige Integralwert als Floatzahl mit 4 Nachkommastelle.

Nehme ich dafür
Code:
float Integral[2][90] = {0,1.1234;1,1.3456,...}
oder gibt es vielleicht in der STL ein einfachere/komfortablere Lösung?

zwette
 
Ja. eine Möglichkeite wäre, einen std::vector von std::pairs zu verwenden, wobei in jedem pair der erste Wert alpha und der zweite den Integralwert darstellt. Alternativ kannst du natürlich eine eigene -pairähnliche Klasse basteln, bei der die Member direkt entsprechend benannt sind.

Ansonsten könntest vielleicht boost::multi_array aus der Boost-Library verwenden (Gibt es bei http://www.boost.org ). Das ist sicher in diesem Fall Overkill, aber es lohnt sich schon, Boost mal anzuschauen. Jedenfalls kannst du mit multi_array einfacher mehrdimensionale Arrays aufbauen, als es mit C-Arrays oder veschachtelten std::vectors möglich ist.
 
Ziemlich kompliziert gelöst

Vorschlag

make it
float IntegralLookUpTable[91] = {.....};

Zugriff:
Rückgabe von IntegralLookUpTable[0-90] ist dann dein Integral zum Winkel

Off course the STL vector<float> has it's appeal too ;)
Die Initialisierung des Vectors ist halt nur zur Laufzeit zu bewerkstelligen.
 
Zurück