Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » vector Problem

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 <
000
25.11.2018, 19:50 Uhr
hgr



Hallo,

bin jetzt seit Stunden mit einem mir unverständlichen Problem beschäftigt. In einem Programm habe ich folgendes stehen:

vector<int> FigList;
FigList.reserve(32);

später soll auf diesen vector durch

int tmpFl;

for (auto &FigList : tmpFl){

jede Menge Aktionen mit tmpFl ...

zugegriffen werden. Leider funktioniert das auch nicht. Ich verstehe es einfach nicht. Jn der Hilfe, Literatur etc. wird ein vector doch genauso definiert.

Leider lässt sich das in VS 2017 nicht übersetzen. Der vector FigList scheint nicht als vector erzeugt zu werden und erzeugt dann auch entsprechende Fehlermeldungen. Komme trotz eifrigen Suchens nicht hinter den Fehler. Bin für jeden Tip dankbar.

Gruß Horst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.11.2018, 22:08 Uhr
Hans
Library Walker
(Operator)


Hi,

bist Du sicher, das die Schleife auch so

C++:
for (auto &FigList : tmpFl){

im Code definiert ist?

Ansonsten ist es immer hilfreich, wenn Du einen genaueren Codeausschnitt und die genaue Fehlermeldung des Compilers mitteilst. - Und zwar genau die erste, die mit dem Problem zu tun hat. In C und C++ ist es oft nämlich so, dass ein Fehler einen langen Rattenschwanz von Folgefehlern nach sich zieht, der aber verschwindet, sobald der erste Fehler korrigiert ist.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.11.2018, 12:24 Uhr
ao

(Operator)


Ich würds mal so versuchen:


C++:
vector<int> FigList;
FigList.reserve(32);

for (auto &tmpFl : FigList){
/* tmpFl ist eine int-Referenz - mach Sachen mit tmpFl */
}



Wenn das nicht weiterhilft, schließe ich mich Hans an und bitte um ein zusammenhängendes Stück Code.

Dieser Post wurde am 26.11.2018 um 12:25 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.11.2018, 15:23 Uhr
ao

(Operator)


Ach so, noch was:
vector::reserve bereitet zwar den vector mit der entsprechenden Kapazität vor, legt aber keine Elemente tatsächlich an. Das musst du zwischen reserve und der Schleife noch erledigen, sonst tut die Schleife nichts.

Google mal den Unterschied zwischen vector::reserve und vector::resize.

Dieser Post wurde am 26.11.2018 um 15:24 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.11.2018, 19:38 Uhr
hgr



Hallo,
erst einmal vielen Dank Euch beiden. Doch der Reihe nach.
Euer Hinweis auf meine bereichsbasierte For-Schleife ist korrekt. Nachdem ich sie geädert habe, hat der Compiler dort nichts mehr zu meckern und übersetzt sie.
Bleiben nur noch die beiden Zeilen 60 und 61.
vector<int> FigList;
FigList.reserve(32);

Hierzu gibt es folgende Fehlermeldungen:
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(61): error C3927: "->": Ein nachstehender Rückgabetyp ist nach einem Nichtfunktionsdeklarator nicht zulässig.
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(61): error C3484: Syntaxfehler: "->" wird vor dem Rückgabetyp erwartet.
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(61): error C3613: Rückgabetyp nach '"->" (Annahme: "int") fehlt
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(61): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(61): error C2371: "FigList": Neudefinition; unterschiedliche Basistypen
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(60): note: Siehe Deklaration von "FigList"
1>cusers\hgr\source\repos\hgrmax\hgrmax\hgrmax.cpp(61): error C2146: Syntaxfehler: Fehlendes ";" vor Bezeichner "reserve"

Der Unterschied zwischen reserve und resize ist mir klar. FigList wird in einem anderen Programmteil mittels push_back mit ints gefüllt. Von daher ist reserve richtig.
Übrigens habe ich einmal die Zeile 61 auskommentiert und der Compiler hatte nichts mehr zu bemängeln. Zwar lieferte das Programm dann nicht ganz die erwarteten Ergebnisse, aber das ist ein anderes und insbesondere mein Problem.
Nochmals vielen Dank.

Gruß Horst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.11.2018, 08:11 Uhr
ao

(Operator)



Zitat von hgr:
Hierzu gibt es folgende Fehlermeldungen:

Eigentlich sieht das richtig aus (vorausgesetzt du hast using namespace std; gemacht). Trotzdem ist der Compiler völlig durcheinander. Evtl. ist in den Zeilen darüber irgendwas falsch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.12.2018, 13:12 Uhr
hgr



Hallo,
habe das Problem mittlerweile lösen können. Es lag an dem unzulässigen Versuch FigList.reserve () bei der Definition globaler Variablen einzuführen. Diese Funktion kann aber nur innerhalb einer anderen Funktion oder Methode aufgerufen werden. Habe sie nun in main() verschoben, und es läuft. Nochmals vielen Dank für Eure Unterstützung.
Gruß Horst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.12.2018, 22:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

versuch dir globale Variablen am besten auch gleich mit abzugewöhnen. Das macht dir später sonst nur Probleme.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: