C
Ethon schrieb:
Dann mußt du nicht den Stream kopieren, sondern nur die Stream-Iteratoren (wenn du ein Problem damit hast, daß Stream-Iteratoren nicht parallel lesen können, in Boost::spirit gab es afaik Multipass-Iteratoren für solche Zwecke).
Wenn ich einen Stream-Iterator habe, müsste ich doch trotzdem irgendwo den Stream haben und steh vor dem selben Problem was Kopieren angeht, oder?
Stream-Iteratoren sind etwas anderes als der darunterliegende Stream. Du würdest doch auch nicht auf die Idee kommen, einen größeren vector<> jedes Mal zu kopieren, wenn du darin einen Wert suchst. Du kannst (theoretisch) beliebige Iteratoren auf den Stream anlegen. Der Stream existiert unabhängig davon und ist aus selber dafür zuständig, seine Resourcen aufzuräumen.
Einziges Problem könnte die etwas schwache Kopiersemantik von Input-Iteratoren sein, aber deswegen gibt es die erwähnten Multipass-Iteratoren.