Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 15:56

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hilfe bei vector [c++]

Discussion on Hilfe bei vector [c++] within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Question Hilfe bei vector [c++]

Hilfe bei vector
Ja, ich weiß, dass ich vieles frage. Aber man muss den Code ja auch verstehen den man schreibt und nicht einfach auswendig lernen...
Vorweg:
Ein vector ist sozusagen ein Datencontainer wo mehrere Daten eines Types z.B. int gespeichert werden. Also im Prinziep das selbe wie ein array
.Mein Problem:
Ich lese gerade ein Buch: Einführung in die Programmierung mit C++ von Bjarne Stroustrup (Erfinder von C++)
Nun werden in diesem Buch nicht Arrays sondern Vectoren verwendet. die man so bestimmt:
Code:
vector<int>zahlen;
Jetzt steht in meinem Buch folgender Code,der Wörter einliest, diese sortiert, und ohne Wortwiederholungen ausgiebt(ich makiere die Stellen die ich nicht verstehe:
Code:
int main()
{
     vector<string> words; //versteh ich
     string temp;   //verstehe ich
     while(cin>>temp)   //-||-
       words.push_back(temp);    //-||-
      cout<<"Anzahl Woerter:"<<word.size()<<endl;   //-||-
     sort(words.begin(),words.end()); //-||-
     for(int i=0; i<words.size(); ++i)  // nicht verstehen 1
      if(i=0 || words[i-1]!=words[i])  // nicht verstehen 2
       cout<<words[i]<<"\n";  //nicht verstehen 3
}
Nicht verstehen 1:
Ich verstehe, dass die Schleife immer weiter geht bis i>die anzahl wörter im vector words ist.
Das hat auch nur mit den nachfolgenden Fragen zu tun...
Nicht verstehen 2:
Das verstehe ich komplett nicht...bin halt kein Übergott ;D
Nicht verstehen 3:
Weßhalb wird der words vector mit words[i] aufgerufen????

Es wäre nett wenn ihr mir bei meinen Problemen helfen könntet damit ich gleich mit dem nächsten Kapitel weitermachen kann...
Mfg Simon
MrSimonKeks is offline  
Old 11/03/2010, 14:09   #2
 
elite*gold: 0
Join Date: Jan 2010
Posts: 250
Received Thanks: 21
|| bedeutet glaub ich ODER

dann && UND
bammes is offline  
Old 11/03/2010, 14:13   #3
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Quote:
Originally Posted by bammes View Post
|| bedeutet glaub ich ODER

dann && UND
Ich meine nicht, dass ihr mir die Bedeutung der Operatoren erklärt Ich würde gerne wissen was da abläuft um es richtig zu verstehen Beispiel:
Code:
while(cin>>y)
Erklärung die while-Schleife läuft so lange weiter bis das einlesen von y unterbrochen wird durch z.B. ein ungültiges Zeichen ( bei int z.B. |).
So etwas wäre sehr hilfreich!!!
Mfg Simon
MrSimonKeks is offline  
Old 11/03/2010, 15:33   #4
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Code:
for(int i=0; i<words.size(); ++i)  //Schleife läuft bis i==size-1  
      if(i=0 || words[i-1]!=words[i])  /* Wenn i=0 oder das vorherige Wort ungleich dem aktuellen*/
            cout<<words[i]<<"\n";  //gibt das Wort am Index i  und ein newline aus
Code Kommentiert.
Bot_interesierter is offline  
Thanks
1 User
Old 11/03/2010, 15:49   #5
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Quote:
Originally Posted by Bot_interesierter View Post
Code:
for(int i=0; i<words.size(); ++i)  //Schleife läuft bis i==size-1  
      if(i=0 || words[i-1]!=words[i])  /* Wenn i=0 oder das vorherige Wort ungleich dem aktuellen*/
            cout<<words[i]<<"\n";  //gibt das Wort am Index i  und ein newline aus
Code Kommentiert.
Danke, hab alles verstanden bis auf das mit den words[i] was \n heißt weiß ich bloß warum man die Wörter aus dem vector mit words[i] aufruft verstehe ich nicht ganz.temp speichert die Wörter doch im vector...
Mfg Simon
MrSimonKeks is offline  
Old 11/03/2010, 15:54   #6
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
Lies doch bitte die Dokumentation zur Vector Klasse.
[] ist der Randomaccess Operator für den Vector, damit wird auf ein Element am Index der zwischen den eckigen Klammern steht zugegriffen.
Die Syntax ist in diesem Fall die selbe wie bei Arrays, schau dir einfach mal die Klassendefinition an.
edit: zum Beispiel hier
Bot_interesierter is offline  
Old 11/03/2010, 19:05   #7
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Hmmm, das ist ja schön und gut aber ich verstehe kein Wort ;D
Kann sein das die Lösung für meine Frage dort vorhanden ist...
Aber ich stelle jetzt einmal die Frage direkt:
Wieso wird bei words[i] in den Klammern [] gerade i aufgerufen??? Auf mein Beispiel bezogen.
Mfg Simon
p.s. Ich bin doch auch nur ein Achtklässler ;D
edit: auf Index i zugreifen ist ja schön und gut aber wieso wird auf i zugegriffen wenn man auf den vector zugreifen möchte? Ich sehe gerade den Wald voller Bäume nicht habe ich so das gefühl
MrSimonKeks is offline  
Old 11/03/2010, 19:13   #8
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by BliszZ View Post
Hmmm, das ist ja schön und gut aber ich verstehe kein Wort ;D
Kann sein das die Lösung für meine Frage dort vorhanden ist...
Aber ich stelle jetzt einmal die Frage direkt:
Wieso wird bei words[i] in den Klammern [] gerade i aufgerufen??? Auf mein Beispiel bezogen.
Mfg Simon
p.s. Ich bin doch auch nur ein Achtklässler ;D
edit: auf Index i zugreifen ist ja schön und gut aber wieso wird auf i zugegriffen wenn man auf den vector zugreifen möchte? Ich sehe gerade den Wald voller Bäume nicht habe ich so das gefühl
Weil auf das i. elemente des Vectors zugegriffen wird. i ist in dem Fall der Index.

btw sicher, dass da
Code:
 if(i = 0)
und nicht
Code:
 if(i == 0)
steht?
MoepMeep is offline  
Thanks
1 User
Old 11/03/2010, 19:40   #9
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Boahr... ich glaube ich habe es jetzt sogar verstanden
Das i ist in diesem Fall der Allgemeine befehl in den Klammern von words[i] welcher auf den Index (Inhalt) von dem words-vector zuzugreifen. Habe ich recht???
Dann wäre es echt recht simpel
Mfg Simon
Edit: Schnell mal nachgeschlagen und du hast recht, da steht wirklich i==0 O.o
MoepMeep kann hellsehn ;D
MrSimonKeks is offline  
Old 11/03/2010, 19:42   #10
 
elite*gold: 42
Join Date: Jun 2008
Posts: 5,426
Received Thanks: 1,888
Quote:
Originally Posted by BliszZ View Post
Boahr... ich glaube ich habe es jetzt sogar verstanden
Das i ist in diesem Fall der Allgemeine befehl in den Klammern von words[i] welcher auf den Index (Inhalt) von dem words-vector zuzugreifen. Habe ich recht???
Dann wäre es echt recht simpel
Mfg Simon
i ist eine Variable.
MoepMeep is offline  
Old 11/03/2010, 20:00   #11
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Quote:
Originally Posted by MoepMeep View Post
i ist eine Variable.
Ich bin dumm.
i ist die Variable die überprüft ob das geschriebene Wort mit einem davor übereinstimmt...
So.... hehe...warum wird mit words[i] jetzt der Index von dem vector words aufgerufen obwohl i nur eine Variable ist die überprüft ob das vorherige wort mit dem jetztigen übereinstimmt... Jetzt habt ihr mich vollends verwirrt ^^
Mfg Simon
MrSimonKeks is offline  
Old 11/03/2010, 21:05   #12
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
i ist einfach ein integer der in der for Schleife inkrementiert wird, bis er um eines kleiner ist als die Größe des Vektors.
Du kannst auf die Elemente im Vektor über ihren Index zugreifen, der erste Index ist 0, der nächste 1 usw.
Das müsstest du eigentlich von normalen Arrays her schon kennen, wenn du zum Beispiel alle Elemente eines Arrays mit 6 Elementen ausgeben möchtest, dann würdest du so eine Schleife machen:
Code:
int array[] = {1,2,3,4,5,6};
for(int i=0;i<6;i++)
     cout <<array[i]<<"\n";
Die Klasse std::vector ist ein Container der sich ähnlich wie ein Array verhält, aber sich um die Speicherverwaltung kümmert und eine reihe nützliche Funktionen bietet.
Nur Pointerarithmetik unterstützt ein std::vector nicht, dafür gibt es die Iteratoren die du sicher auch bald kennen lernen wirst.

Und eines noch, wenn nach dem Kopf einer for-Schleife keine geschweiften Klammern stehen, so ist nur der Code bis zum nächsten Semikolon der Schleifenkörper, für den Fall dass du das noch nicht kennst.
Bot_interesierter is offline  
Old 11/03/2010, 21:59   #13
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Ok ich habe es jetzt verstanden. Habe aber noch 2 Fragen:
1. Gibt es ein befehl zb. words[all] was dann alle eingeschpeicherten werte wiedergibt???
2. Ist bei deinem Beispiel
Code:
cout<< array[i]<<'\n';
dass letzte gespeicherte Wort oder was wird dann ausgegeben? z.B. bei dir jetzt:
3 5 2
2 // die letzte gespeicherte Zahl
oder was würde denn da stehen?
p.s. In den Buch was ich lese wurde nicht über Arrays gesprcohen kommt vielleicht noch.
Mfg Simon
Edit: Ich habe das Gefühl ich habe es immer noch nicht richtig verstanden ^^
Du kannst mir ja eine pn schicken dann brauche ich hier nicht so rumzuspammen ;D
MrSimonKeks is offline  
Old 11/03/2010, 22:20   #14
 
elite*gold: 20
Join Date: Sep 2006
Posts: 1,100
Received Thanks: 184
1.
Nein das gibt es nicht, denn der [] Operator liefert nur Referenzen auf Elemente im Vektor zurück.
2.
Die Ausgabe meines Beispiels ist einfach:
1
2
3
4
5
6
Bot_interesierter is offline  
Old 11/04/2010, 06:39   #15
 
MrSimonKeks's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 116
Received Thanks: 13
Hmm wie würde man es denn machen wenn man irgendwann später alle gespeicherten Werte für vector ausgeben möchte für z.B ein Telefombuch???
MrSimonKeks is offline  
Reply


Similar Threads Similar Threads
Hilfe Hilfe Pls Gucken Brauche Hilfe
04/04/2010 - Technical Support - 3 Replies
Ja wegen der Signatur sieht es euch ma an in pics /http://img641.imageshack.us/img641/6070/unbenann t790kjkh.png http://img444.imageshack.us/img444/6981/unbenannt kjhghzuijhbh.png kann mir pls einer HELFEN...
HILFE HILFE HILFE MIT SjSro Startproblem
12/14/2009 - SRO Private Server - 4 Replies
Hi Leute hab ein Problem mit SjSro wenn ich auf starten klicke kommt diese Meldung Sorry.Failed to execute Silkroad. bitte helfen hab anti virus aus geht immer noch nicht wo liegt das problem thx schon mal im voraus BITTE HELFEN BITTE WILL UMBEDINGT ZOCKEN!!
Vector / Vexel Effect - Tutorial
05/01/2009 - Artist Tutorials - 2 Replies
Here a short tutorial for a very nice vector like effect. http://img3.imagebanana.com/img/whh7h113/Cool_Vec tor_Tutorial___CraZy_by_NetG.jpg After you finished all it should looks like this: Finished



All times are GMT +2. The time now is 15:56.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.