STL Vector ausgeben

no82

Grünschnabel
Hallo,
wie kann ich denn einen 2 dimensionalen vector ausgeben. Dieser hat folgende Form
vector<vector<int>>
Vielen Dank
 
Zuletzt bearbeitet:
Es ist nur so, dass die Container eine unbestimmte Groesse haben. Ich muesste mit Zeigern arbeiten und bin mir mit der Syntax nicht schluessig. Waere froh,wenn du mir da weiterhelfen koenntest.
 
Moin,

so auf die schnelle "vom Hirn in die Tastatur", würde ich das so machen:
Code:
vector<int> vecInteger;
vector<vecInteger> vAeußererVektor;

..... // die Vektoren füllen

vector<vector <int>>::iterator itAußen;
for( itAußen = vAeußererVektor.begin(); itAußen != vAeußererVektor.end(); itAußen++)
{
    vector<int> vInnererVektor = *itAußen;
    vector<int>::iterator itInnen;    
    for( itInnen = vInnererVektor.begin(); itInnen != vInnererVektor.end(); itInnen++)
    {
        int iValue = *itInnen;
        ...
        // tue irgendwas mit iValue
    }
}
Gruß
Klaus
 
Moin,

oh, bitte - gerne ;) viel Erfolg!
Und es wäre schön, wenn du anschließend hier ein Feedback für Nachwelt reinschreiben würdest :p

Gruß
Klaus
 
Würde spontan den Std. ein wenig mehr nutzen ;)

C++:
#include <iostream>
#include <algorithm> // std::copy
#include <iterator> // std::ostream_iterator
#include <fstream> // std::ofstream
#include <vector>

int main()
{
    // datensatz anlegen
    std::vector<int> data(100, 10);

    // datei öffnen
    std::ofstream file_stream("storage.dat");
    if (!file_stream) { std::cerr << "FEHLER: Daten konnten nicht gespeichert werden!"; return 1; }
    
    // datensatz in datei kopieren
    std::copy(data.begin(), data.end(), std::ostream_iterator<int>(file_stream, " "));
}
und einlesen geht genauso ;)
 
Hallo devDevil,

hmm, irgendwie versteh' ich Deine Antwort jetzt nicht so ganz! :suspekt:

Wo steht was von Datei-Ein/Auslesen? Scheinbar will er doch einen Vektor voll Vektoren auslesen, oder?

Was genau macht denn dieses
std::vector<int> data(100, 10);

Das ist mir bislang noch nicht untergekommen! Meine Hilfe hier von VS6 sagt lediglich : "... liefert einen Zeiger auf der erste Element der Sequenz ...". Ich bekomme doch dadurch nur einen eindimensionalen Vektor, oder

Kleine Aufklärung hierzu wäre nett ;)

Gruß
Klaus
 
Jo sorry hatte das 2 dimensionale überlesen ;)

C++:
#include <iostream>
#include <algorithm> // std::copy
#include <iterator> // std::ostream_iterator
#include <fstream> // std::ofstream
#include <vector>

int main()
{
    // datensatz anlegen
    std::vector< std::vector<int> > data(100, std::vector<int>(10, 10));
 
    // datei öffnen
    std::ofstream file_stream("storage.dat");
    if (!file_stream) { std::cerr << "FEHLER: Daten konnten nicht gespeichert werden!"; return 1; }

    // datensatz in datei kopieren
    for (std::vector< std::vector<int> >::const_iterator it(data.begin()); it != data.end(); ++it)
    {       
         std::copy(it->begin(), it->end(), std::ostream_iterator<int>(file_stream, " "));
         file_stream << '|';
    }
}
So das ist nur nen Beispieldatensatz (data is jetzt mit 100 std:vector<int>(10, 10) gefüllt)
Ehm jeder Vektor wird vom anderen durch | getrennt. Die einzellnen Werte durch ' '. Dadurch kannst du sehr einfach per std::istream_iterator das einlesen vornehmen ;)
 
Die Variante mit den Pointern funktioniert perfekt. Nun ist eine erneute Schwierigkeit aufgetauch:


class myclass
{
public:
int x,y;
double index;
};


vector<myclass> Objekt;

Wie kann ich denn jetzt die Variablen x,y und index belegen bzw. bearbeiten?:confused:
 
Zurück