Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 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 < [ 2 ]
000
16.09.2003, 12:52 Uhr
~Helmuth
Gast


hi.

habe eine frage.

ich habe einen vector deklariert in den ich eine vorher unbekannte menge an daten eingeben will. gedacht ist das so. z.b.

vector_name[1] = "hier"
vector_name[2] = "steht"
vector_name[3] = "ein"
vector_name[4] = "Test"

leider komme ich nicht mit dem ADDEN von werten in den vector klar.
wie muss der syntax aussehen?

das zweite problem ist, wie kann ich die maximale position ermitteln, damit ich diese in einer FOR-SCHLEIFE als max-wert benutzen kann, um die inhalte auszugeben.

danke euch für die hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.09.2003, 12:53 Uhr
typecast
aka loddab
(Operator)


Zum Vektor hinzufügen kannst du mit:

C++:
  vector_name.push_back("hier");
  vector_name.push_back("steht");
  ...


--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.09.2003, 13:20 Uhr
~Helmuth
Gast


ahhh ... jetzt fällt es mir wieder ein.
die ganze reihe von:

pop_back();
size();
at();
empty();

usw. ....


danke für die erleuchtung!

gruß Helmuth
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.09.2003, 13:51 Uhr
Pablo
Supertux
(Operator)


Guck mal unter:

www.sgi.com/tech/stl/index.html
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.09.2003, 15:03 Uhr
Bruder Leif
dances with systems
(Operator)


Allgemeine C++/STL-Frage, daher verschoben. Durchlaufen aller Elemente funzt über Iterator, siehe STL-Doku :-)
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.09.2003, 15:50 Uhr
0xdeadbeef
Gott
(Operator)


Beispiel:

C++:
vector<int> v(10); //Speicher für 10 Elemente anfordern
for(int i = 0; i < v.reserved(); ++i) v[i] = i; //v.reserved() == Platz im vector
cout << "Durchlauf mit Index:" << endl;
for(int i = 0; i < v.size(); ++i) cout << v[i] << endl; //v.size() == Elemente im vector
cout << endl << "Durchlauf mit Iterator:" << endl;
for(vector<int>::iterator i = v.begin(); i != v.end(); ++i) cout << *i << endl;


Die Iteratoren werden übrigens erst richtig spannend, wenn man sie in Verbindung mit Funktionen einsetzt. Zum Beispiel könnte ich auch schreiben:

C++:
copy(v.begin(), v.end(), ostream_iterator<int>(cout, "\n"));


und es hätte denselben Effekt. (alle Codestücke unter der Annahme, dass using namespace std; im Code steht. Ansonsten heißen die Dinger std::vector, std::copy und std::ostream_iterator).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 16.09.2003 um 15:53 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.09.2003, 22:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
Ich wollte mir mal auf dein und virtis anraten die stl anschauen
Hab dein code mal durch den compiler gejagt. Musste wegen vc++ noch ein bisschen was abändern
allerdings frisst der das hier nicht


C++:
int main(){
int i;
std::vector<int> v(10); //Speicher für 10 Elemente anfordern
for(i=0; i < v.reserved(); ++i) v[ i ] = i; //v.reserved() == Platz im vector
std::cout << "Durchlauf mit Index:" << std::endl;
for(i=0; i < v.size(); ++i) std::cout << v[ i ] << std::endl; //v.size() == Elemente im vector
std::cout << std::endl << "Durchlauf mit Iterator:" << std::endl;
for(std::vector<int>::iterator j = v.begin(); j != v.end(); ++j) std::cout << *j << std::endl;
}



'reserved' : is not a member of 'vector<int,class std::allocator<int> >'
wiso ist das kein member ist da ein fehler in deinem code oder liegt das an vc++
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.09.2003, 08:09 Uhr
virtual
Sexiest Bit alive
(Operator)


@windalf
Du musst bei std::vector unterscheiden zwischen "Kapazität" und "Größe". Die Größe eines Vektors entspricht der Anzahl der Elemente, die er enthält. Diese Größe kannst du mit der size() methode abfragen. Verändert wird sie allein durch hinzufügen oder entfernen von Elementen. Die Kapazität gibt an, wie viele Elemente der Vektor aufnehmen könnte, ohne daß er intern diesen Vergrößern müßte. Die Kapaziztät wird implicit bei Einfügeoperation heraufgesetzt oder explizit mit reserve() gesetzt, Abfragen kann man sie mit capacity().
Generell gilt:
1. v.size() <= v.capacity()
2. Nur die Elemente mit einem Index <v.size() sind initialisiert; für alle anderen ist zwar Speicher belegt, aber niemals ein Constructor aufgerufen worden. Ein Umstand, der bei int Elementen nicht auffallen mag.

Das nur so als Erklärung zwischendurch. In deinem Fall solltest Du also v.size() an Stelle von der nicht existent Funktion [v.reserved()[/i] benutzen.

C++:
std::vector<int> v(10, 4711);


Würde dir übrigens einen Vektor machen, der 10 Elemente mit dem Wert 4711 hat.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 17.09.2003 um 08:10 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.09.2003, 09:19 Uhr
0xdeadbeef
Gott
(Operator)


Ja, klar. Mein Fehler. Das kommt davon, wenn man ohne Compiler programmiert...

Aber hey, auch Götter können irren.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.09.2003, 09:33 Uhr
virtual
Sexiest Bit alive
(Operator)


@beefy

Von einem Gott würde ich allerdings erwarten, daß er seine Fehler nicht zugibt, sondern Kraft seiner Allmächtigkeit einfach auf seinem Standpunkt beharrt und sagt, daß die Bibel (aka Standard) irrt.

Aber als Atheist ist das für mich eh egal: aus meiner Sicht gibt es dich ja garnicht. Also was schreib ich hier überhaupt....
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: