Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LsFan

Frischling

  • »LsFan« ist der Autor dieses Themas

Beiträge: 29

Beruf: Der Böse Admin sein xD

  • Private Nachricht senden

1

22.08.2013, 14:27

Vector komplett ausgeben?

Hallo, ich habe einen Vector und kann ihm per Texteingabe ein Item hinzufügen. (Hier Item = Struktur)

Man Füllt alle Werte der Struktur aus und dann füge ich diese fertige Struktur mit vec.push_back(meine_struktur);

Diese Werte werden natürlich nach push_back wieder zurückgesetzt.

wie kann ich alle Elemente, die ich in den Vector gepckt habe, SO ausgeben:



meine_struktur.Name1
meine_struktur.Alter1
meine_struktur.Geschlecht1

meine_struktur.Name2
meine_struktur.Alter2
meine_struktur.Geschlecht2

meine_struktur.Name3
meine_struktur.Alter3
meine_struktur.Geschlecht3

lg LsFan
(\ /) | Dies ist Hase.
(^.^) | <-- Bitte kopiere Hase in deine Signatur
(*_*) | und hilf ihm, die Weltherrschaft an sich zu reißen.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

22.08.2013, 15:05

In dem du alle Elemente deines Vectors durchiterierst und jedes Element einzeln ausgibst. Suche doch mal nach "Iterate through Vector c++".

3

22.08.2013, 19:07

Hi,
also da es so aussieht, als wärst du recht neu in diesem Gebiet, versuch ich dir das genauer zu erklären (an die Profis: Wenn etwas falsch ist, bitte korrigieren :D)

Also einen Iterator kannst/solltest du mehr oder weniger mit einem Zeiger gleichsetzen, der auf ein Objekt im Container(in dem Fall ein Vector) zeigt.
Dieser wurde so überladen, dass du dich einfach durch den Container bewegen kannst(Bsp: Iterator++ um auf das nächste Objekt zu zeigen.)
Nun hat ein Vector mehrere Methoden eine von diesen ist "vectorclass.begin();" (wobei vectorclass eine Instanz ist).Diese Funktion liefert einen Iterator zurück, der auf das erste Objekt im Container zeigt. Eine weitere Methode wäre "vectorclass.end();", die auf das Objekt nach dem letzten liefert(Bitte korrigieren.Ich glaube wie ich es formuliert habe ist es falsch!)
Okay...jetzt kannst du dich schonmal durch den Container bewegen.
Aber wie soll man auf "Item" zugreifen?
Wie oben schon gesagt wurde der Iterator so überladen, dass man diesen mit einem Zeiger gleichsetzen kann/sollte(Also der *Operator und ->Operator und =Operator) Also greifst du dann ganz einfach mit Iterator->Name auf deine einzelnen Objekte zu.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vector>
#include "item.h"
int main()
{

vector<item> Items;
vector<item>::iterator ItemIterator;

Items.push_back(item("Guenther",23);           //Hier hast du deinen Vector mit Daten...
Items.push_back(item("Natalie", 22);
Items.push_back(item("Peter", 19);

for(ItemIterator = Items.begin()/*Hier zeigt der Iterator auf das erste Objekt imContainer*/;ItemIterator != Items.end()/*Solange der Iterator nicht beim letzten Objekt+1 ist*/;ItemIterator++/*Solange soll er auf das nächste Objekt zeigen*/)
{
cout << ItemIterator->Name;
cout << ItemIterator->Alter;

}

return 0;
}

4

22.08.2013, 19:11

Hallo LsFan

Schau her das funktioniert so:

std::vector<Struktur> struktur_vec;
std::vector<Struktur>::iterator iterator_vec;

for(iterator_vec = struktur_vec.begin(); iterator_vec != struktur_vec.end(); iterator_vec++)
{
std::cout<<(*iterator_vec).daten<<std::endl;
}


oder du kanst es so machen:

std::vector<Struktur>vector;

for(int i = 0; i < vector.size(); i++)
{
std::cout<<vector[i]<<endl;
}

Grüsse Spitzohr

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

5

22.08.2013, 20:01

Wenn es C++11 schon gibt, dann würde ich auch gleich anfangen meinen Code in C++11 zu schreiben:

C-/C++-Quelltext

1
2
3
4
std::vector<int> vec;
vec.pushback(3);vec.pushback(5);vec.pushback(7);
//Hier der interessante Teil:
for(int i : vec){std::cout << i << "\n";}



Wieso zur Hölle ignoriert der meine Formatierung?
42 / Pi = 13,37

6

22.08.2013, 20:52

Fourb, könntest du das bitte noch erklären? :D Es interessiert mich. :P

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

Fourb

Treue Seele

Beiträge: 122

Beruf: Schüler

  • Private Nachricht senden

9

22.08.2013, 21:42

Nobody answered my question..
Offtopic ist nötig, ja.
42 / Pi = 13,37

patrick246

Treue Seele

Beiträge: 328

Wohnort: nahe Heilbronn/BW

Beruf: TG Profil Informatik-Schüler

  • Private Nachricht senden

10

22.08.2013, 22:53

Beim Antworten musst du den Quellcode-Tab auswählen, nicht den Editor-Tab. Dann wird die Formatierung auch übernommen

Werbeanzeige