Commit c5f61fcbd33cc41a7741ccb300a7da28f19eab59
1 parent
31b2cfbb
Improve efficiency of ResolveRecorder
Removing an element from a set with iterator is constant time, and std::set specifies that other operations on the set do not invalidate existing iterators.
Showing
1 changed file
with
3 additions
and
4 deletions
include/qpdf/QPDF.hh
| @@ -1063,18 +1063,17 @@ class QPDF | @@ -1063,18 +1063,17 @@ class QPDF | ||
| 1063 | public: | 1063 | public: |
| 1064 | ResolveRecorder(QPDF* qpdf, QPDFObjGen const& og) : | 1064 | ResolveRecorder(QPDF* qpdf, QPDFObjGen const& og) : |
| 1065 | qpdf(qpdf), | 1065 | qpdf(qpdf), |
| 1066 | - og(og) | 1066 | + iter(qpdf->m->resolving.insert(og).first) |
| 1067 | { | 1067 | { |
| 1068 | - qpdf->m->resolving.insert(og); | ||
| 1069 | } | 1068 | } |
| 1070 | virtual ~ResolveRecorder() | 1069 | virtual ~ResolveRecorder() |
| 1071 | { | 1070 | { |
| 1072 | - this->qpdf->m->resolving.erase(og); | 1071 | + this->qpdf->m->resolving.erase(iter); |
| 1073 | } | 1072 | } |
| 1074 | 1073 | ||
| 1075 | private: | 1074 | private: |
| 1076 | QPDF* qpdf; | 1075 | QPDF* qpdf; |
| 1077 | - QPDFObjGen og; | 1076 | + std::set<QPDFObjGen>::const_iterator iter; |
| 1078 | }; | 1077 | }; |
| 1079 | friend class ResolveRecorder; | 1078 | friend class ResolveRecorder; |
| 1080 | 1079 |