Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zu vector

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.12.2004, 15:02 Uhr
Mutabor



Hallo Forum.
Ich möchte mir mit "vector" eine Matrix aufbauen.
0,1,2
3,4,5
6,7,8

Soll später zeilenweise CStrings verwalten.
Ist mein Ansatz richtig?


C++:
typedef std::vector<char> CHARVECTOR;
typedef std::vector<int> INTVECTOR;

void CTestMultiArrayDlg::OnBstart()
{
    // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    std::vector<INTVECTOR> vec;
    INTVECTOR iv;
    int i,j,a;
    int Izeichen;
    int size1,size2;

    a = 0;
    for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++){
            iv.push_back(a);
            a++;
        }
        vec.push_back(iv);
    }
    size1 = vec.size();

    size1 = vec.size();//hier ist size1 = 3 OK
    size2 = iv.size();//hier ist size2 = 9 OK aber für meine Zwecke sollte size2 = 3 sein

    for(i = 0; i < 3; i++){
        for(j = 0; j < 3; j++){
            Izeichen = vec.at(i).at(j);
        }
    }
    //Die Ausgabe von Izeichen ist 0,1,2   0,1,2   0,1,2
    //wie erreiche eine Ausgabe von 0,1,2  3,4,5  6,7,8 ?????
}



Danke im voraus.


Bearbeitung von Windalf:

bitte cpp-tags verwenden


Dieser Post wurde am 31.12.2004 um 16:18 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.12.2004, 16:19 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


für ne matrix kannst du einfach

C++:
std::vector<std::vector<Typ> > //man beachte das leerzeichen zwischen den beiden schliessenden eckigen klammern, nur neuere kompiler fressens teilweise ohne..


verwenden...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.12.2004, 16:54 Uhr
Mutabor



Diese beiden Funktionen ergeben error

iv.push_back(a);
Izeichen = vec.at(i).at(j);

Welche Funktionen brauch ich jetzt?
Gruss Mutabor
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.12.2004, 19:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na wenn du einen 2d vector hast musst du das was du mit push_back verwendest selber auch ein vector sein... du musst dir also einen temp-vector vom typ

C++:
std::vector<Typ>


erstellen...

diesen füllst du dann immer mit werten und pushst denn dann auf den 2d vector... zugriff mit at ist gar nicht nötig... kannst auch direkt die arrayoperatoren verwenden... also z.b.


C++:
Izeichen =vec[i][j];


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: