Problem mit STL..

paul10

Mitglied
Hallo,
ich bin gerade dabei mich in die STL und deren Möglichkeiten einzulesen.
Jetzt habe ich aber leider Probleme mit einem Beispiel, ich hoffe ihr könnt mir
diesbezüglich mal helfen...

Code:
#include <iostream>
#include <vector>
using namespace std;

int main ( void ) {
	vector<int>intVector(5);
	
	cout << "Die Elemente werden Initalisiert..." << endl;
	
	for ( int i = 0; i < intVector.size();i++ ){
		intVector[i] = i*i;
	}
	
	cout << "Hier alle Elemente : " << endl;
	
	for ( int i = 0; i < intVector.size();i++ ){
		cout << intVector[i] << endl;
	}
	// Interator wird erzeugt ...
	vector<int>::const_iterator myIterator = intVector.begin();
	cout << "Ausgegeben per Iterator!" << endl;
	for ( vector<int>::const_iterator i = intVector.begin(); i != intVector.end();i++ ){
		cout << *myIterator << endl;
		myIterator++;
	}
	cout << "Ein Element wird mit insert hinzugefuegt!" << endl;
	
	// Neuer Iterator wird erzeugt
	vector<int>::const_iterator myIterator2 = intVector.begin();
	// Neues Objekt wird eingefügt, mit dem Wert 5
    intVector.insert( intVector.end(), 50 );
	// Alle Elemente werden ausgegeben
	vector<int>::const_iterator i = intVector.begin();
	cout << ".." << endl;
	for ( ; i != intVector.end();i++ ){
		cout << *i << endl;
	}
	cout << *i << endl;
	intVector.clear();
	// vector<int>::const_iterator myIterator3 = intVector.begin();
	// cout << "Zugriff auf das Letzt Elment per Iterator!" << endl;

	system ( "PAUSE" );
	return 0;
}

Bei der Zeile kommt der Fehler...
Code:
cout << *i << endl;

allerdings habe ich keine Ahnung warum? zuvor in der Schleife ist es ja gegangen? warum jetzt nichtmehr?

ich hoffe ihr könnt mir helfen
Danke im Vorraus

Gruß
 
Hallo, danke für deine Antowort, habe den Fehler aber soeben gefunden:

Code:
vector<int>::const_iterator i = intVector.begin();
for ( ; i != intVector.end();i++ ){
		cout << *i << endl;
	}
	cout << *i << endl;


Mein Denkfehler war, dass ich vergessen habe, dass beim letzen Durchlauf i nochmal erhöht wird und dann mit intVector.end() verglich wird... da intVector.end() ja auf eine Position nach dem letzen container zeigt, versuche ich hiermit auf einen nicht definierten speicher zuzugreifen, was logischer weiße zu einem Fehler führt

Danke

Gruß
 
Zurück