kann ein Container int-Arrays tragen?



  • containerträger schrieb:

    lasse ich überall [2] weg, dann gehts. aber ich will [2]

    Meine Güte, es gibt hier so viele Vorschläge im Thread. Hast du auch nur einen davon berücksichtigt?

    Arrays können nicht sinnvoll in Containern gespeichert werden, da sie die Anforderungen an Kopier- und Zuweisbarkeit nicht erfüllen. Alternativen wurden genügend genannt.



  • hm ok dann mal std::tr1::array versuchen. Steht das in C++ Reference? Oder wo?



  • scheisse das ist nicht standard. das wird zu aufwändig man



  • ich mach einfach

    struct D3 {
    	int x;
    	int y;
    	int d;
    };
    
    // ...
    
    std::deque<std::deque<D3>> *multi_deque;
    

    glaub das haut hin



  • ah der vorschlag von unskilled habe ich übersehen oh mist



  • containerträger schrieb:

    std::deque<std::deque<int[2]>>
    

    was wäre die lösung?
    soll einfach 3 int-werte tragen

    Noch etwas:
    int[2] ist ein array mit zwei Elementen und nicht drei.

    Aus dem ">>" muss immernoch ein "> >" gemacht werden. (Leerzeichen dazwischen)

    Gruß,
    SP



  • 4 fach Post ... heftig es gibt auch EDIT



  • containerträger schrieb:

    scheisse das ist nicht standard. das wird zu aufwändig man

    Was soll aufwändig daran sein, boost zu installieren? Ist sowieso in einer C++ - Entwicklungsumgebung so gut wie Pflicht.

    Tim06TR schrieb:

    4 fach Post ... heftig es gibt auch EDIT

    Nicht für Unregistrierte.



  • "> >" ok wird übernommen.

    boost hmm wenn ich den sinn mal erkenne



  • Sebastian Pizer schrieb:

    Aus dem ">>" muss immernoch ein "> >" gemacht werden. (Leerzeichen dazwischen)

    Kann der GCC das noch nicht?
    Imho wird es doch so gar im kommenden Standard explizit vorgeschrieben?!
    Der MSVC kann es auch schon ein Weilchen ^^

    boost hmm wenn ich den sinn mal erkenne

    Sinn von was?
    Außerdem... Welchen Compiler nutzt du denn, dass der TR1 nicht verfügbar ist? Auch hier weiß ich es nicht genau, ob der GCC es hat - würd mich aber sehr wundern, wenn es fehlen würde...

    bb



  • unskilled schrieb:

    Sebastian Pizer schrieb:

    Aus dem ">>" muss immernoch ein "> >" gemacht werden. (Leerzeichen dazwischen)

    Kann der GCC das noch nicht?

    Er kennt diesen Fall und spuckt auch dementsprechend eine Fehlermeldung aus:
    Fehler: »>>« sollte innerhalb einer geschachtelten Templateargumentliste »> >« sein

    unskilled schrieb:

    Imho wird es doch so gar im kommenden Standard explizit vorgeschrieben?!
    Der MSVC kann es auch schon ein Weilchen ^^

    Herzlichen Glückwunsch! :p
    Naja, es ist eben (noch) kein Standard.

    Diese Änderung ist übrigends auch nicht abwärtskompatibel. Kann man jetzt noch das hier schreiben:

    template<int I> struct foo {};
      typedef foo<16>>2> blah; // gültiges C++98, kein C++0x
    

    muss man das demnächst so machen

    template<int I> struct foo {};
      typedef foo<(16>>2)> blah; // gültig in C++98 und c++0x
    

    Und ja: GCC kommt auch mit TR1 daher. Ich weiss nicht, ob's vollständig ist, aber da ist allerlei dabei (array, regex, bind, function, tuple, type traits, ...). Die TR1 Implementierungen (bind, function) scheinen auch Gebrauch von variadischen Templates zu machen -- die gibts bei MSVC++ noch nicht, soweit ich weiß.

    Gruß,
    SP



  • containerträger schrieb:

    boost hmm wenn ich den sinn mal erkenne

    Vielleicht hattest du bisher nur zu wenig Anwendungsfälle. Aber das wird schon noch, glaub mir. 😉
    Nur schon BOOST_FOREACH , boost::lexical_cast oder boost::bind können ganz schön praktisch sein. Oder die Smart-Pointer und Pointer-Container braucht man auch ab und zu...

    Sebastian Pizer schrieb:

    Die TR1 Implementierungen (bind, function) scheinen auch Gebrauch von variadischen Templates zu machen -- die gibts bei MSVC++ noch nicht, soweit ich weiß.

    Ja, wäre mir nicht bekannt, dass der MSVC++ 2008 Variadic Templates unterstützt.

    Tim06TR schrieb:

    4 fach Post ... heftig es gibt auch EDIT

    Nein, wie gesagt nicht für Unregistrierte. Du könntest zur Abwechslung aber auch mal etwas Sinnvolles beitragen.


Anmelden zum Antworten