Sizeof() gibt falschen Wert aus
-
Ok ihr habt mich überzeugt, ich nehme std::array.
-
size_t size = sizeof( DeinArray ) / sizeof( DeinArray[0] ); for( size_t i = 0; i < size; ++i ) {...}
So geht das.
-
EOP schrieb:
So geht das.
Nein,
std::array
ist besser.Mit rohen Arrays hast du eine fehleranfällige implizite Konvertierung, dafür keine Wertsemantik, keine Debug-Checks und kein STL-konformes Interface. Und du bist nicht einmal schneller.
-
EOP schrieb:
size_t size = sizeof( DeinArray ) / sizeof( DeinArray[0] ); for( size_t i = 0; i < size; ++i ) {...}
So geht das.
Besser std::extent verwenden...
-
int arr[] = { 1, 2, 3, 4, 5 }; for(auto beg = std::begin(arr); beg != std::end(arr); ++beg) std::cout << *beg << '\n';
Oder so.
-
In der Tat, wenn es nur um ein for each geht, dann ist das natürlich noch besser. Oder eben gleich so:
int arr[] = { 1, 2, 3, 4, 5 }; for(auto i : arr) std::cout << *i << '\n';
-
Nexus schrieb:
EOP schrieb:
So geht das.
Nein,
std::array
ist besser.Mit rohen Arrays hast du eine fehleranfällige implizite Konvertierung, dafür keine Wertsemantik, keine Debug-Checks und kein STL-konformes Interface. Und du bist nicht einmal schneller.
Wenn man std::array hat. Ich z.B. hab's nicht.
EDIT: oder std::extent oder auto.
Ich hab alles davon nicht zur Verfügung.
-
std::tr1::array
gibts schon seit 2005 undboost::array
seit 2000
-
Nexus schrieb:
std::tr1::array
gibts schon seit 2005 undboost::array
seit 2000Noch was, das ich nicht zur Verfügung hab.
-
und kein STL-konformes Interface
#include <algorithm> #include <iostream> int main(int argc, char** argv) { std::for_each(&argv[0], &argv[argc-1], [](char const* c){std::cout << c << "\n";}); }
hm?
-
Edit:
argc-1
ist falsch, müsstargc
heißen.
-
EOP schrieb:
Nexus schrieb:
std::tr1::array
gibts schon seit 2005 undboost::array
seit 2000Noch was, das ich nicht zur Verfügung hab.
Du hast kein Inet? Weil sonst könntest du die Array Implementation auch einfach rauskopieren.
Eine einfache eigene Implementation kann man zudem ganz schnell selber erstellen. Innert 10-15 Minuten hast du so eine Klasse selber geschrieben. Je nach Funktionsumfang sogar noch schneller.Grüssli