X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fcollect.h;h=5fcf6948c7aacec47ccf371754343725bbe30ab9;hb=cafee6f81257fa81ee302b5d3ffa82213a0a6a44;hp=34f81aad87e4b6f81551e5b710ecd881af15836d;hpb=f2ebc98bfa8e780935d76108b897015128c6271e;p=libsub.git diff --git a/src/collect.h b/src/collect.h index 34f81aa..5fcf694 100644 --- a/src/collect.h +++ b/src/collect.h @@ -30,29 +30,29 @@ namespace sub { */ template T -collect (std::list raw) +collect (std::vector raw) { - raw.sort (); + std::stable_sort (raw.begin(), raw.end()); T out; boost::optional current; - for (std::list::const_iterator i = raw.begin (); i != raw.end(); ++i) { - if (current && current->same_metadata (*i)) { + for (auto const& i: raw) { + if (current && current->same_metadata(i)) { /* This RawSubtitle can be added to current... */ - if (!current->lines.empty() && current->lines.back().same_metadata (*i)) { + if (!current->lines.empty() && current->lines.back().same_metadata(i)) { /* ... and indeed to its last line */ - current->lines.back().blocks.push_back (Block (*i)); + current->lines.back().blocks.push_back(Block(i)); } else { /* ... as a new line */ - current->lines.push_back (Line (*i)); + current->lines.push_back(Line(i)); } } else { /* We must start a new Subtitle */ if (current) { out.push_back (current.get ()); } - current = Subtitle (*i); + current = Subtitle (i); } }