Vector-erase durch Pointer?
-
Hallo,
Ich habe ein problem mit dem Löschen von Elementen eines Vektors, welcher ales pointer an eine Funktion übergeben wird.
#include <vector> using namespace std; typedef unsigned int uint; void funct1 (vector<uint> **allvectors){ vector<uint>::iterator it=allvectors[1][0].begin(); while (it != allvectors[1][0].end()) { if (it->allvectors[1][0] == 1) { allvectors[1][0].erase(it); break; } ++it; } } int main(){ vector<uint> vect1; for(int i=0;i < 10;i++){ vect1.push_back(i); } vector<uint> *allvectors[10]; *allvectors[1]=vect1; funct1(allvectors); }ICh erhalte beim Kompilieren immer eine Fehlermeldung.
Leider habe ich keine Ahnung, was das Problem mit dem it-> pointer ist.
Vielen Dank im Voraus!!
-
Abgesehen von der fürchterlichen Einrückung und der unausführlichen Compilermeldung:
if (it->allvectors[1][0] == 1) { wird zu if (*it == 1)
-
Danke!
Ja klar, der Iterator muss nur noch dereferenziert werden!

-
Martin2000 schrieb:
ICh erhalte beim Kompilieren immer eine Fehlermeldung.
Zur Laufzeit wirds auch nicht besser werden. Du erstellst hier ein Array von Zeigern auf 10
std::vector<uint>s. Selbst wenn ich mir erklären könnte, warum man so einen umständlichen Weg wählt, bliebe immer noch das Problem, dass du nicht initialisierte Zeiger dereferenzierst.vector<uint> *allvectors[10]; *allvectors[1]=vect1;Zeiger auf Zeiger braucht man auch nur sehr selten in C++. Was willst du genau erreichen? Wir können dir wahrscheinlich eine bessere Möglichkeit aufzeigen.