Iterator liefert Mist

little-smile

Grünschnabel
Hi Ihr da draußen,

So langsam verzweifle ich!!

Ich habe einen STL Vector von integers. Wenn ich mir nun bestimmte Teilabschnitte ausgeben lassen will, kommt nicht das, was zu erwarten wäre.

Kleines Beispiel:

Im Vector steht:
0,2,1,3,2,3,2,0,2,0,2,0,1,3,2,....

nun habe ich bestimmte Positionen : 4, 12.
Von 4 bis 12 möchte ich mir die Werte ausgeben lassen, also: 3,2,3,2,0,2,0,2,0

Was ich mache ist:

Code:
vector<int>::const_iterator start, end;
int begin, stop; 
begin=4;
stop = 12;

start = stop = seq.begin();

advance(start,begin);
advance(end,stop);
Wenn ich es mir dann ausgeben lasse, kommt da was total anderes raus, als erwartet, nämlich:

1,3,1,0,1,0,2,0,2

Diese folge gibt es nicht mal in der Sequenz.

Woran kann das liegen, was mache ich falsch!
Dazu sei gesagt, wenn ich einfach die komplette Sequenz ausgeben lasse, dann kommt genau das, was oben steht! Das verwirrt mich!

Ich hoffe, mir kann jemand helfen!

Gruß
 
Hi.

Das kann ich nicht nachvollziehen.

C++:
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>

using namespace std;

int main(int argc, char *argv[])
{
	int i[] = { 0,2,1,3,2,3,2,0,2,0,2,0,1,3,2 };

	vector<int> v(i, i + sizeof(i)/sizeof(*i));

	vector<int>::const_iterator start = v.begin(), end = start;

	int begin = 4, stop = 12;

	advance(start, begin);
	advance(end, stop);

	copy(start, end, ostream_iterator<int>(cout, " "));

    return 0;
}
Ergebnis:
Code:
2 3 2 0 2 0 2 0
Du solltest ein kompilierbares Minimalbeispiel machen, so das man es nachvollziehen kann. So kann man nur raten. Mein Tipp wäre das dein Vektor schon längst zerstört ist (unter der Annahme das du den Code übermäßig vereinfacht hast).

Gruß
 
Wie jetzt - Thema erledigt?

Das ist aber irgendwie nicht die feine englische. Kommt mir so vor als würde ich mit ner Wand reden. Wäre ganz nett wenn du mitteilen würdest ob du's gelöst hast oder was auch immer...

Gruß
 
Sorry, ich dachte, da ich es auf erledigt gesetzt hatte, hat sich das geklärt. Hatte deine Antwort auch jetzt erst gelesen!

Ja ich habe es gelöst. Ich hatte falsch auf den Inhalt zu gegriffen! Hatte es nur nicht gleich gemerkt, weil der Compiler nicht gemeckert hat.

Entschuldige vielmals!

Gruß,
little-smile
 
Zurück