[Libreoffice-commits] core.git: sc/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Thu Dec 20 16:03:16 UTC 2018
sc/source/core/data/table3.cxx | 23 ++++++-----------------
1 file changed, 6 insertions(+), 17 deletions(-)
New commits:
commit 58966e16d8649a16fa961dbedc4f6f97693021e6
Author: Takeshi Abe <tabe at fixedpoint.jp>
AuthorDate: Wed Dec 19 17:24:45 2018 +0900
Commit: Eike Rathke <erack at redhat.com>
CommitDate: Thu Dec 20 17:02:52 2018 +0100
sc: Simplify RemoveSubTotalsHandler using std::set
instead of std::vector.
Change-Id: I5927e061b5d2944cad68b96e313934738c63c321
Reviewed-on: https://gerrit.libreoffice.org/65400
Tested-by: Jenkins
Reviewed-by: Eike Rathke <erack at redhat.com>
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 5a2550ce0ead..48952234341d 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -69,6 +69,7 @@
#include <svl/sharedstringpool.hxx>
#include <memory>
+#include <set>
#include <unordered_set>
#include <vector>
#include <mdds/flat_segment_tree.hpp>
@@ -1864,25 +1865,14 @@ bool ScTable::TestRemoveSubTotals( const ScSubTotalParam& rParam )
namespace {
-class RemoveSubTotalsHandler
+struct RemoveSubTotalsHandler
{
- std::vector<SCROW> maRemoved;
-public:
+ std::set<SCROW> aRemoved;
void operator() (size_t nRow, const ScFormulaCell* p)
{
if (p->IsSubTotal())
- maRemoved.push_back(nRow);
- }
-
- void getRows(std::vector<SCROW>& rRows)
- {
- // Sort and remove duplicates.
- std::sort(maRemoved.begin(), maRemoved.end());
- std::vector<SCROW>::iterator it = std::unique(maRemoved.begin(), maRemoved.end());
- maRemoved.erase(it, maRemoved.end());
-
- maRemoved.swap(rRows);
+ aRemoved.insert(nRow);
}
};
@@ -1902,10 +1892,9 @@ void ScTable::RemoveSubTotals( ScSubTotalParam& rParam )
sc::ParseFormula(rCells.begin(), rCells, nStartRow, nEndRow, aFunc);
}
- std::vector<SCROW> aRows;
- aFunc.getRows(aRows);
+ auto& aRows = aFunc.aRemoved;
- std::vector<SCROW>::reverse_iterator it = aRows.rbegin(), itEnd = aRows.rend();
+ auto it = aRows.rbegin(), itEnd = aRows.rend();
for (; it != itEnd; ++it)
{
SCROW nRow = *it;
More information about the Libreoffice-commits
mailing list