A
Ja, der BCB ist dafür bekannt den C++ Standard schlecht zu unterstützen. Selbst der neue 2006er von Borland ist noch schlecht. Die IDE mag gut sein, aber nicht was den ISO-Standard angeht. GCC war auch seeehr lange schlecht bzgl. Standard, da hat sich glaub ich auch erst richtig was mit der 4er Version getan. Also, das es da funktioniert hat, hat nicht viel zu bedeuten.
Dir bleibt leider nichts übrigen als jetzt alles anzupassen. Denn das ein Iterator zurück gegeben wird, ist einfach der ISO-Standard. Der Sinn ist einfach, das die Daten im Vector zwar (wir von dir richtig vermutet) auch über einen Pointer angesprochen werden können, aber ein roher Pointer ist halt "dumm". Ein Iterator bewirkt eine Kapselung, die einfach wartbarer ist. Bsp.:
typedef std::vector<unit8> uint8Vec;
uint8Vec vec;
uint8Vec::iterator it = vec.begin();
Irgendwann fällt dir auf: "Huch, ich muß jetzt auf eine List umsteigen." Oder "ich will jetzt keine uint8s mehr, sondern longs drin haben." Dann kannst du das hier machen:
typedef std::list<unit8> uint8Vec; // list anstatt vector
uint8Vec vec;
uint8Vec::iterator it = vec.begin(); // funktioniert noch!
oder
typedef std::vector<long> uint8Vec; // longs
uint8Vec vec;
uint8Vec::iterator it = vec.begin(); // funktioniert noch!
Bei einem rohen Pointer müsstest du wie jetzt deinen Code an mehreren Stellen bearbeiten. Aber so, ist der Iterator einfach schlauer und du benutzt ihn trotzdem wie einen Pointer.
Da (zum Glück) alle neuen guten Compiler den Standard unterstützen, wirst du die Arbeit einfach machen müssen. Weil sonst schiebst du deinen illegalen Code nur vor dir her. So mühselig sich das leider anhört.