Jetzt kostenlos registrieren! | Passwort vergessen?

Zurück   elitepvpers > Coders Den > C/C++
Dein letzter Besuch war: Heute um 21:31 Uhr

  • Registriere dich kostenlos um Beiträge zu verfassen und alle Features zu nutzen!

Advertisement



Vector Problemchen

Discussion on Vector Problemchen within the C/C++ forum part of the Coders Den category.

Antwort
 
Alt   #1
 
Benutzerbild von Seife_
 
elite*gold: 35
Registriert seit: Jun 2009
Beiträge: 966
Erhaltene Thanks: 73
Vector Problemchen

Code:
int _tmain(int argc, _TCHAR* argv[])
{
	string lvlname;
	char option;
	ifstream input;
	ofstream output;

	cout << "Geben sie den Namen ein."<<endl;
	cin >> lvlname;

	input.open(lvlname + ".txt");

	
	string outputs;
	string temp;
	vector<string> file[6];

	if(input)
	{
		while(!input.eof())
		{
			getline(input, temp);
			file.push_back(temp);
		}
	}

	else
		return -1;
Die Idee hinter diesem Code ist es Zeilen in einen Vector von Strings zu laden. Ich wollte erstmal wissen wie man das korrekt machen würde. Ich weiß dass ist von der Form her noch ziemlich schlecht aber ich frag nach nem besseren Weg wie man das Umsetzen könnte und vor allem die Gründe dafür. Und ich bekomm noch nen compile time error bei " file.push_back(temp);" nämlich
Code:
1>c:\users\seithe\documents\visual studio 2010\projects\test\test\test.cpp(33):
 error C2228: Links von ".push_back" muss sich eine Klasse/Struktur/Union befinden.
Woran liegt das denn ^^ Danke
Seife_ ist offline  
Alt 02.03.2013, 01:55   #2


 
Benutzerbild von MrSm!th
 
elite*gold: 7110
Registriert seit: Jun 2009
Beiträge: 28.908
Erhaltene Thanks: 25.409
Du machst ein Array von Vektoren und willst dann von diesem die Methode push_back aufrufen. Ein Array hat die logischerweise nicht.
Ich gehe davon aus, dass du einen Vektor der Größe 6 wolltest, richtig?
Das ginge folgendermaßen:
Code:
vector<string> file(6);
Dann sollte es auch gehen. Ein Array von Vektoren wären ja letztendlich 6 einzelne Vektoren und jeder kann mehrere Strings fassen; ich denke nicht, dass du das wolltest.
Falls doch, dann musst du natürlich angeben, welchen Vektor du meintest, sprich
Code:
//z.B. den ersten
file[0].push_back(...);
MrSm!th ist offline  
Thanks
1 Benutzer
Alt 02.03.2013, 02:52   #3
 
Benutzerbild von Seife_
 
elite*gold: 35
Registriert seit: Jun 2009
Beiträge: 966
Erhaltene Thanks: 73
Doch, genau das war es Vielen Dank
Seife_ ist offline  
Alt 02.03.2013, 10:19   #4
 
Benutzerbild von Schlüsselbein
 
elite*gold: 0
Registriert seit: Feb 2013
Beiträge: 1.137
Erhaltene Thanks: 869
Auch noch ne kleine Ergänzung dazu:
Die Anzahl im Konstruktor anzugeben, bringt oft einen Nebeneffekt mit, den man nicht erwartet. Es werden dabei schon n Objekte erstellt und im Vector angelegt. Da du diese aber nachher sowieso überschreibst, ist das sinnlos.

Ein bzw. der Vorteil von Vectoren ist ja, dass man sich um die Größe (meist) nicht wirklich kümmern muss.
Das einzige, was manchmal sinnvoll sein kann ist ein vec.reserve(n). Damit wird Speicher für n Elemente angefordert und bei großen Datenmengen kann die kontinuierliche Anforderung von Speicher den ein oder anderen Algo merkbar verlangsamen.

Da du auch noch nach einer anderen Lösung fragst, hier mal die etwas mehr C++'sche:
Code:
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <iterator>

const char* OPEN_FILENAME = "foo.txt";

int main()
{
	std::vector<std::string> lines;
	std::ifstream open_file(OPEN_FILENAME);
	
	if(open_file)
	{
		std::copy(std::istream_iterator<std::string>(open_file), std::istream_iterator<std::string>(), std::back_inserter(lines));
	}
}


Gruß
Gruß
Schlüsselbein ist offline  
Thanks
1 Benutzer
Antwort


Ähnliche Themen Ähnliche Themen
[HowTo]Vector Wallpaper erstellen
31.08.2011 - Artist Tutorials - 8 Antworten
Auf Anfrage habe ich dieses Bild Tutorial erstellt : http://img816.imageshack.us/img816/3048/vectortut .jpg Material MEGAUPLOAD - The leading online storage and file delivery service
Mw2 Vector
12.05.2011 - Call of Duty - 9 Antworten
Stimmt das wenn man Schaldämpfer raufschrauft dass sich die Vector nicht mehr so verzieht
Vector Bildschirmschoner
09.12.2010 - General Art - 3 Antworten
Hey Leute, Da mir langweilig ist möchte ich euch zur verschönerung eures Desktops ein paar 1200x800px große stylische Desktophintergründe zur verfügung stellen Nummer 1: http://img263.imageshack.us/img263/3104/unbenannt 1ta.jpg http://img253.imageshack.us/img253/6052/hintergru nd2j.jpg Auf Anfrage :
Hilfe bei vector [c++]
04.11.2010 - C/C++ - 17 Antworten
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...
Vector / Vexel Effect - Tutorial
01.05.2009 - Artist Tutorials - 2 Antworten
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



Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 Uhr.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 | Kontakt | FAQ | Werbung | Datenschutzerklärung | Nutzungsbedingungen | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.