Ersatz für vector
-
ich kann in c++/cli keine vectoren mehr benutzen, ist das normal? wenn ja wie erstelle ich nun einen dynamischen array?
-
Verwende:
System::Collections::Generic::List<...>
-
aja und wie ist die genaue syntax wenn ich in einer schleife x werte einlesen will, ohne zu wissen wie groß x wird
bitte etwas konkreter
-
wanderameise schrieb:
aja und wie ist die genaue syntax wenn ich in einer schleife x werte einlesen will, ohne zu wissen wie groß x wird
bitte etwas konkreter!?
System::Collections::Generic::List<int> a; a.Add(100); a.Add(10); for each(int i in a) Console::WriteLine(i);
-
for each(int i in a)
das hab ich ja noch nie gesehen! gibts das schon immer?
-
Das ist C++/CLI... (eben dieses Forum )
-
edit: klappt alles danke !!
-
wanderameise schrieb:
ich kann in c++/cli keine vectoren mehr benutzen, ist das normal? wenn ja wie erstelle ich nun einen dynamischen array?
Hy, die aussage ist nicht ganz richtig, du kannst die unmanagend Vector-Klasse nicht benutzer (#include "vector") aber du kannst jederzeit die managmend Vector-Klasse benutzen, ist zu finden unter: <cliext\vector>. Mit der kannst du wie mit der alten Klasse arbeiten, aber eben nur mit managmend-Klassen.
Mfg Marc-o
-
Hallo wieso kann ich denn keinen unmanaged vector benutzen? Folgender code ist zwar nicht sonderlich effektiv aber funktioniert.
#include "stdafx.h" #include <vector> using namespace System; int main(array<System::String ^> ^args) { std::vector<int> iVec; iVec.push_back(1); iVec.push_back(2); iVec.push_back(3); std::vector<int>::iterator iter = iVec.begin(); for(; iter != iVec.end(); iter++) { Console::WriteLine(*iter); } return 0; }
-
Ich würde entweder in C++/CLI oder ISO C++ programmieren bzw. die entsprechenden libs benutzen.
Nur an wenigen, definierten stellen die konvertierungen managed <> unmanaged vornehmen.simon
-
templäd schrieb:
Hallo wieso kann ich denn keinen unmanaged vector benutzen? Folgender code ist zwar nicht sonderlich effektiv aber funktioniert.
#include "stdafx.h" #include <vector> using namespace System; int main(array<System::String ^> ^args) { std::vector<int> iVec; iVec.push_back(1); iVec.push_back(2); iVec.push_back(3); std::vector<int>::iterator iter = iVec.begin(); for(; iter != iVec.end(); iter++) { Console::WriteLine(*iter); } return 0; }
Er funktioniert aucht nur deswegen, weil zwar der Funktionsrumpf und alles ausenrum managed-Code ist, aber in der Funktion arbeitest du nur mit unmanaged-Code.
Und wie simon schon sagte, würde ich auch keinen Code mischen, entweder den einen oder den anderen. Spätestens wenns nen großes Projekt ist und du nach längeren wieder dran musst wirst dich verfluchen, zum anderen find ich es keinen guten Programmierstill und schwer für andere zu lesen.
Mfg Marc-O