Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » 2D Array mit Vektoren

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
13.01.2009, 16:22 Uhr
filth



Hallo,

ich habe ein Problem mit diesem kleinen Testprogramm. Als Ausgabe erhalte ich nur "0". Was habe ich falsch gemacht?



Code:
#include <vector>        //Für std::vector
#include <windows.h>    // Standard Header For Most Programs
#include <iostream>
#include "DTW.h"

using namespace std;

    
    void printArray(vector< vector<int> > array2)
    {
        for(int ii=0; ii < 3; ii++)
        {
            for(int jj=0; jj < 2; jj++)
            {
                cout << array2[ii][jj] << endl;
            }
        }
    }

    void buildArray(vector< vector<int> > array2)
    {
        array2[0][0] = 0;
        array2[0][1] = 1;
        array2[1][0] = 10;
        array2[1][1] = 11;
        array2[2][0] = 20;
        array2[2][1] = 21;
    }



    void DTW::start() {


        vector< vector<int> > array2(3, vector<int>(2,0));

        buildArray(array2);
        printArray(array2);

    }



Danke
Grüße
Alex
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.01.2009, 16:48 Uhr
0xdeadbeef
Gott
(Operator)


Ich muss jetzt raten, wie deine main aussieht, aber wenn ich richtig verstehe, was du da vorhast: Du übergibst buildArray() array2 by-value, dementsprechend beeinflussen alle Änderungen daran arrays2 in start() nicht. Du musst den Vektor als Referenz übergeben, also

C++:
void buildArray(vector< vector<int> > &array2)



Nachtrag: Übrigens würde ich die windows.h nicht verwenden, wenn du den Kram darin nicht brauchst - ohne entsprechende Präprozessormakros kann das gerne mal vollkommen richtigen C++-Code zerschießen. So definiert der Header zum Beispiel ein Makro max(x, y), das dann fiese Probleme macht, wenn du std::numeric_limits<int>::max() o.ä. benutzen willst.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 13.01.2009 um 16:50 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.01.2009, 18:45 Uhr
filth



Hallo,

vielen Dank - so klappt es.
Ich habe aber noch eine weitere Frage:


C++:
    // input strings
        vector<int> matchPattern;
        matchPattern.push_back(0);
        matchPattern.push_back(0);
        matchPattern.push_back(0);
        matchPattern.push_back(270);
        matchPattern.push_back(270);
        matchPattern.push_back(270);
        matchPattern.push_back(180);
        matchPattern.push_back(180);
        matchPattern.push_back(180);

        vector<int> inputPattern;
        inputPattern.push_back(182);
        inputPattern.push_back(20);
        inputPattern.push_back(10);
        inputPattern.push_back(290);
        inputPattern.push_back(275);
        inputPattern.push_back(275);
        inputPattern.push_back(10);
        inputPattern.push_back(290);
        inputPattern.push_back(270);        
        inputPattern.push_back(185);
        inputPattern.push_back(10);
        inputPattern.push_back(180);
        inputPattern.push_back(160);

        int zeilen  = matchPattern.size();
        int spalten = inputPattern.size();

        vector< vector<int> > array2(zeilen, vector<int>(spalten,0));
                

        buildArray(matchPattern, inputPattern, array2);

        printArray(zeilen, spalten, array2);



Die Matrix wird mit den 2 Vektoren oben gebildet. In buildArray(...) werden die Werte geschrieben, dabei kann es passieren, dass die Anzahl der Spalten in "inputPattern" gekürzt wird. Wie kann ich/ man die Anzahl der Spalten in array2 nach dem Aufruf von buildArray(..) entsprechend kürzen? Die Anzahl der zu kürzenden Spalten kann buildArray als int liefern.

Grüße
Alex
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.01.2009, 18:53 Uhr
0xdeadbeef
Gott
(Operator)


Meinst du

C++:
array2.resize(neue_groesse);


?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.01.2009, 19:03 Uhr
filth



Ja das ist es.

Vielen Dank!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: