diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-01-02 20:49:42 +0100 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-04-01 14:57:22 +0200 |
commit | 5072238867f37f6c6ecd53dab06e42ea2763cf56 (patch) | |
tree | 897f1429131abed187c4712120236278c3ad77cc /libqpdf/QPDF_Array.cc | |
parent | e186da17213826ae22b73584641d2e8cd10b24d5 (diff) | |
download | qpdf-5072238867f37f6c6ecd53dab06e42ea2763cf56.tar.zst |
Refactor QPDF_Array::getAsVector
Diffstat (limited to 'libqpdf/QPDF_Array.cc')
-rw-r--r-- | libqpdf/QPDF_Array.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libqpdf/QPDF_Array.cc b/libqpdf/QPDF_Array.cc index 3ed18bf4..9593c31f 100644 --- a/libqpdf/QPDF_Array.cc +++ b/libqpdf/QPDF_Array.cc @@ -172,16 +172,20 @@ QPDF_Array::at(int n) const noexcept } } -void -QPDF_Array::getAsVector(std::vector<QPDFObjectHandle>& v) const +std::vector<QPDFObjectHandle> +QPDF_Array::getAsVector() const { if (sparse) { - int size = sp_elements.size(); - for (int i = 0; i < size; ++i) { - v.push_back(at(i)); + std::vector<QPDFObjectHandle> v; + v.reserve(size_t(size())); + for (auto const& item: sp_elements.elements) { + v.resize(size_t(item.first), null_oh); + v.push_back(item.second); } + v.resize(size_t(size()), null_oh); + return v; } else { - v = std::vector<QPDFObjectHandle>(elements.cbegin(), elements.cend()); + return {elements.cbegin(), elements.cend()}; } } |