vector für int´s

Thomasio

Erfahrenes Mitglied
Ich habe gerade herausgefunden, wie einfach man ein array von std::string´s mit einem std::vector verwalten kann.
Im Gegensatz zu "normalen" string arrays muss man keine Längen vorher definieren, auch die Anzahl Einträge bleibt variabel, mit .push_back kann man neue Einträge hinzufügen, .size() liefert mir jederzeit die Anzahl Einträge, usw.

Nun bin ich auf der Suche nach etwas vergleichbarem für int´s, also ein array von int´s, dessen Grösse ich nicht vorher festlegen muss, wo ich jederzeit Einträge anfügen kann, einzelne Einträge editieren und einfach eine Schleife durchs array bauen kann.
Gibt es das? Wenn ja, wie sieht das aus?

Wenn wir schon dabei sind, gibt es auch eine Mischform? Also etwas vector ähnliches, was gleichzeitig verschiedene Typen von Variablen aufnehmen kann, wie z.B. ein stringstream, dem es völlig wurscht ist, ob man ihn mit string oder int oder gemischt füttert, nur als array?
 
Hallo,
Nun bin ich auf der Suche nach etwas vergleichbarem für int´s, also ein array von int´s, dessen Grösse ich nicht vorher festlegen muss, wo ich jederzeit Einträge anfügen kann, einzelne Einträge editieren und einfach eine Schleife durchs array bauen kann.
Gibt es das? Wenn ja, wie sieht das aus?
Das funktioniert dank dem Template Mechanismus genau so wie für Strings auch:
C++:
#include <iostream>
#include <vector>

int main() {
    std::vector<int> intv;
    intv.push_back(1);
    intv.push_back(2);
    intv.push_back(3);

    std::cout << "Size = " << intv.size() << std::endl;
    for (int i = 0; i < intv.size(); i++)
        std::cout << intv[i] << std::endl;
}
Wenn wir schon dabei sind, gibt es auch eine Mischform? Also etwas vector ähnliches, was gleichzeitig verschiedene Typen von Variablen aufnehmen kann, wie z.B. ein stringstream, dem es völlig wurscht ist, ob man ihn mit string oder int oder gemischt füttert, nur als array?
Nein, das geht nicht. Ein Vektor ist immer definiert als eine Sammlung von Objekten gleichen Typs.

Gruß,
RedWing
 
Natürlich kannst du aber einen Vektor für selbsterstellte Klassen verwenden:
Code:
struct Beispiel {
  Beispiel(int z, const std::string& s) : zahl1(z), info(s) { }
  int zahl1;
  std::string info;
};

vector<Beispiel> beispielvector;
Beispiel bsp (2, "Herbert");
beispielvector.push_back (bsp);
 
Hi,

eigentlich kommt es drauf an was du speichern willst. Die Stdlib bietet auch die möglichkeit beliebige typen miteinander zu kombinieren.

z.b.: map<key,value> wobei der key jeweils nur einmal vorkommen darf..
Code:
...
typedef map<int, string> Abbildungstyp;

int main()
{
    Abbildungstyp Abbildung;

    Abbildung.insert( Abbildungstyp::value_type(123, "Andreas"));
    Abbildung.insert( Abbildungstyp::value_type(456, "Bernd"));
    Abbildung.insert( Abbildungstyp::value_type(789, "Juergen"));

    cout << "Ausgabe:\n";
    Abbildungstyp::iterator iter = Abbildung.begin();
    while(iter != Abbildung.end())
    {
          cout << (*iter).first << ':'     // Nummer
               << (*iter).second           // Name
               << endl;
          ++iter;
    }
}
 
Zuletzt bearbeitet:
Zurück