008
12.06.2006, 09:17 Uhr
(un)wissender
Niveauwart
|
Also ich würde es so machen:
C++: |
#include <algorithm> #include <iterator> #include <iostream> #include <fstream> #include <sstream> #include <string> #include <vector>
struct Line { unsigned _number; std::vector<double> _values; };
std::ostream& operator<<(std::ostream& out, Line const& line);
int main() { std::ifstream in("test.txt"); std::vector<Line> lines; std::string line; std::stringstream formater; std::size_t reserve = 0; while(in && !in.eof()) { std::getline(in, line); formater << line; lines.resize(lines.size() + 1); formater >> lines.back()._number; lines.back()._values.reserve(reserve); while(formater && !formater.eof()) { double v; formater >> v; lines.back()._values.push_back(v); } formater.clear(); reserve = lines.back()._values.size(); } std::copy(lines.begin(), lines.end(), std::ostream_iterator<Line>(std::cout, "\n")); }
std::ostream& operator<<(std::ostream& out, Line const& line) { out << line._number << ' '; std::copy(line._values.begin(), line._values.end(), std::ostream_iterator<double>(out, " ")); return out; }
|
Misst du die Performance? Mich würde interessieren, welche Version die schnellste ist. Ok, hängt natürlich auch immer von der lokalen Version der C++-Standardbibliothek ab. -- Wer früher stirbt ist länger tot. Dieser Post wurde am 12.06.2006 um 09:42 Uhr von (un)wissender editiert. |