[Libreoffice-commits] core.git: sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Jan 15 06:05:43 UTC 2019


 sc/source/ui/docshell/autostyl.cxx        |   23 -
 sc/source/ui/docshell/datastream.cxx      |    5 
 sc/source/ui/docshell/dbdocfun.cxx        |   16 -
 sc/source/ui/docshell/docfunc.cxx         |  367 ++++++++++++++++--------------
 sc/source/ui/docshell/docfuncutil.cxx     |   22 -
 sc/source/ui/docshell/docsh.cxx           |    4 
 sc/source/ui/docshell/docsh4.cxx          |    5 
 sc/source/ui/docshell/documentlinkmgr.cxx |    4 
 sc/source/ui/docshell/editable.cxx        |   14 -
 sc/source/ui/docshell/externalrefmgr.cxx  |  220 +++++++----------
 sc/source/ui/docshell/macromgr.cxx        |    9 
 11 files changed, 334 insertions(+), 355 deletions(-)

New commits:
commit 739a3243944d533d94d244d1464c0b8ec49e214c
Author:     Arkadiy Illarionov <qarkai at gmail.com>
AuthorDate: Fri Jan 11 01:40:49 2019 +0300
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Tue Jan 15 07:05:18 2019 +0100

    Simplify containers iterations in sc/source/ui/docshell
    
    Use range-based loop or replace with STL functions
    
    Change-Id: I7ab254241ff5b9637ac28282ad0868b3c55a1fb3
    Reviewed-on: https://gerrit.libreoffice.org/66135
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sc/source/ui/docshell/autostyl.cxx b/sc/source/ui/docshell/autostyl.cxx
index d7db2e4a7d5a..41458d241159 100644
--- a/sc/source/ui/docshell/autostyl.cxx
+++ b/sc/source/ui/docshell/autostyl.cxx
@@ -83,15 +83,14 @@ void ScAutoStyleList::AddInitial( const ScRange& rRange, const OUString& rStyle1
 
 IMPL_LINK_NOARG(ScAutoStyleList, InitHdl, Timer *, void)
 {
-    std::vector<ScAutoStyleInitData>::iterator iter;
-    for (iter = aInitials.begin(); iter != aInitials.end(); ++iter)
+    for (const auto& rInitial : aInitials)
     {
         //  apply first style immediately
-        pDocSh->DoAutoStyle(iter->aRange,iter->aStyle1);
+        pDocSh->DoAutoStyle(rInitial.aRange, rInitial.aStyle1);
 
         //  add second style to list
-        if (iter->nTimeout)
-            AddEntry(iter->nTimeout,iter->aRange,iter->aStyle2 );
+        if (rInitial.nTimeout)
+            AddEntry(rInitial.nTimeout, rInitial.aRange, rInitial.aStyle2 );
     }
 
     aInitials.clear();
@@ -131,13 +130,12 @@ void ScAutoStyleList::AddEntry( sal_uLong nTimeout, const ScRange& rRange, const
 
 void ScAutoStyleList::AdjustEntries( sal_uLong nDiff )  // milliseconds
 {
-    std::vector<ScAutoStyleData>::iterator iter;
-    for (iter = aEntries.begin(); iter != aEntries.end(); ++iter)
+    for (auto& rEntry : aEntries)
     {
-        if (iter->nTimeout <= nDiff)
-            iter->nTimeout = 0;                 // expired
+        if (rEntry.nTimeout <= nDiff)
+            rEntry.nTimeout = 0;                 // expired
         else
-            iter->nTimeout -= nDiff;                // continue counting
+            rEntry.nTimeout -= nDiff;                // continue counting
     }
 }
 
@@ -162,9 +160,8 @@ void ScAutoStyleList::ExecuteAllNow()
 {
     aTimer.Stop();
 
-    std::vector<ScAutoStyleData>::iterator iter;
-    for (iter = aEntries.begin(); iter != aEntries.end(); ++iter)
-        pDocSh->DoAutoStyle(iter->aRange,iter->aStyle);
+    for (const auto& rEntry : aEntries)
+        pDocSh->DoAutoStyle(rEntry.aRange, rEntry.aStyle);
 
     aEntries.clear();
 }
diff --git a/sc/source/ui/docshell/datastream.cxx b/sc/source/ui/docshell/datastream.cxx
index bbbed185ef35..4e3c700c73f1 100644
--- a/sc/source/ui/docshell/datastream.cxx
+++ b/sc/source/ui/docshell/datastream.cxx
@@ -477,12 +477,10 @@ void DataStream::Text2Doc()
 
     MoveData();
     {
-        std::vector<Cell>::const_iterator it = aLine.maCells.begin(), itEnd = aLine.maCells.end();
         SCCOL nCol = maStartRange.aStart.Col();
         const char* pLineHead = aLine.maLine.getStr();
-        for (; it != itEnd; ++it, ++nCol)
+        for (const Cell& rCell : aLine.maCells)
         {
-            const Cell& rCell = *it;
             if (rCell.mbValue)
             {
                 maDocAccess.setNumericCell(
@@ -494,6 +492,7 @@ void DataStream::Text2Doc()
                     ScAddress(nCol, mnCurRow, maStartRange.aStart.Tab()),
                     OUString(pLineHead+rCell.maStr.Pos, rCell.maStr.Size, RTL_TEXTENCODING_UTF8));
             }
+            ++nCol;
         }
     }
 
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index aec29c4434e8..8a7896a71024 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -251,12 +251,11 @@ void ScDBDocFunc::ModifyAllDBData( const ScDBCollection& rNewColl, const std::ve
     std::unique_ptr<ScDBCollection> pUndoColl;
     bool bRecord = rDoc.IsUndoEnabled();
 
-    std::vector<ScRange>::const_iterator iter;
-    for (iter = rDelAreaList.begin(); iter != rDelAreaList.end(); ++iter)
+    for (const auto& rDelArea : rDelAreaList)
     {
         // unregistering target in SBA no longer necessary
-        const ScAddress& rStart = iter->aStart;
-        const ScAddress& rEnd   = iter->aEnd;
+        const ScAddress& rStart = rDelArea.aStart;
+        const ScAddress& rEnd   = rDelArea.aEnd;
         rDocShell.DBAreaDeleted(
             rStart.Tab(), rStart.Col(), rStart.Row(), rEnd.Col());
     }
@@ -1626,11 +1625,8 @@ void ScDBDocFunc::RefreshPivotTables(const ScDPObject* pDPObj, bool bApi)
     if (pErrId)
         return;
 
-    std::set<ScDPObject*>::iterator it = aRefs.begin(), itEnd = aRefs.end();
-    for (; it != itEnd; ++it)
+    for (ScDPObject* pObj : aRefs)
     {
-        ScDPObject* pObj = *it;
-
         // This action is intentionally not undoable since it modifies cache.
         UpdatePivotTable(*pObj, false, bApi);
     }
@@ -1663,10 +1659,8 @@ void ScDBDocFunc::RefreshPivotTableGroups(ScDPObject* pDPObj)
 
     // We allow pDimData being NULL.
     const ScDPDimensionSaveData* pDimData = pSaveData->GetExistingDimensionData();
-    std::set<ScDPObject*>::iterator it = aRefs.begin(), itEnd = aRefs.end();
-    for (; it != itEnd; ++it)
+    for (ScDPObject* pObj : aRefs)
     {
-        ScDPObject* pObj = *it;
         if (pObj != pDPObj)
         {
             pSaveData = pObj->GetSaveData();
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index bfea212bd7cc..8f8d642190e5 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -737,10 +737,14 @@ bool ScDocFunc::TransliterateText( const ScMarkData& rMark, TransliterationFlags
 
         ScDocumentUniquePtr pUndoDoc(new ScDocument( SCDOCMODE_UNDO ));
         pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab );
-        ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
-            if (*itr != nStartTab)
-                pUndoDoc->AddUndoTab( *itr, *itr );
+        for (const auto& rTab : rMark)
+        {
+            if (rTab >= nTabCount)
+                break;
+
+            if (rTab != nStartTab)
+                pUndoDoc->AddUndoTab( rTab, rTab );
+        }
 
         ScRange aCopyRange = aMarkRange;
         aCopyRange.aStart.SetTab(0);
@@ -1099,11 +1103,9 @@ void ScDocFunc::PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngine,
         bRet = SetEditCell(rPos, *pNewData, !bApi);
 
         // Set the paragraph attributes back to the EditEngine.
-        ScMyRememberItemVector::iterator aItr = aRememberItems.begin();
-        while (aItr != aRememberItems.end())
+        for (const auto& rxItem : aRememberItems)
         {
-            rEngine.SetParaAttribs((*aItr)->nIndex, (*aItr)->aItemSet);
-            ++aItr;
+            rEngine.SetParaAttribs(rxItem->nIndex, rxItem->aItemSet);
         }
 
         // #i61702# if the content isn't accessed, there's no need to set the UpdateMode again
@@ -1415,10 +1417,14 @@ bool ScDocFunc::ApplyStyle( const ScMarkData& rMark, const OUString& rStyleName,
         SCTAB nStartTab = aMultiRange.aStart.Tab();
         SCTAB nTabCount = rDoc.GetTableCount();
         pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab );
-        ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
-            if (*itr != nStartTab)
-                pUndoDoc->AddUndoTab( *itr, *itr );
+        for (const auto& rTab : rMark)
+        {
+            if (rTab >= nTabCount)
+                break;
+
+            if (rTab != nStartTab)
+                pUndoDoc->AddUndoTab( rTab, rTab );
+        }
 
         ScRange aCopyRange = aMultiRange;
         aCopyRange.aStart.SetTab(0);
@@ -1457,7 +1463,6 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
         return true;
 
     const ScDPCollection* pDPs = pDoc->GetDPCollection();
-    ScMarkData::const_iterator itBeg = rMarkData.begin(), itEnd = rMarkData.end();
 
     ScRange aRange(rRange); // local copy
     switch (eCmd)
@@ -1470,12 +1475,11 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
         }
         case INS_CELLSDOWN:
         {
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
-            {
-                if (pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), *it))
-                    // This column range cuts through at least one pivot table.  Not good.
-                    return false;
-            }
+            auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+                return pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), rTab); });
+            if (bIntersects)
+                // This column range cuts through at least one pivot table.  Not good.
+                return false;
 
             // Start row must be either at the top or above any pivot tables.
             if (aRange.aStart.Row() < 0)
@@ -1489,10 +1493,10 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
             ScRange aTest(aRange);
             aTest.aStart.IncRow(-1); // Test one row up.
             aTest.aEnd.SetRow(aTest.aStart.Row());
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+            for (const auto& rTab : rMarkData)
             {
-                aTest.aStart.SetTab(*it);
-                aTest.aEnd.SetTab(*it);
+                aTest.aStart.SetTab(rTab);
+                aTest.aEnd.SetTab(rTab);
                 if (pDPs->HasTable(aTest))
                     return false;
             }
@@ -1506,12 +1510,11 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
         }
         case INS_CELLSRIGHT:
         {
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
-            {
-                if (pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), *it))
-                    // This column range cuts through at least one pivot table.  Not good.
-                    return false;
-            }
+            auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+                return pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), rTab); });
+            if (bIntersects)
+                // This column range cuts through at least one pivot table.  Not good.
+                return false;
 
             // Start row must be either at the top or above any pivot tables.
             if (aRange.aStart.Col() < 0)
@@ -1525,10 +1528,10 @@ bool canInsertCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, I
             ScRange aTest(aRange);
             aTest.aStart.IncCol(-1); // Test one column to the left.
             aTest.aEnd.SetCol(aTest.aStart.Col());
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+            for (const auto& rTab : rMarkData)
             {
-                aTest.aStart.SetTab(*it);
-                aTest.aEnd.SetTab(*it);
+                aTest.aStart.SetTab(rTab);
+                aTest.aEnd.SetTab(rTab);
                 if (pDPs->HasTable(aTest))
                     return false;
             }
@@ -1554,7 +1557,6 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
         return true;
 
     const ScDPCollection* pDPs = pDoc->GetDPCollection();
-    ScMarkData::const_iterator itBeg = rMarkData.begin(), itEnd = rMarkData.end();
 
     ScRange aRange(rRange); // local copy
 
@@ -1568,18 +1570,17 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
         }
         case DelCellCmd::CellsUp:
         {
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
-            {
-                if (pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), *it))
-                    // This column range cuts through at least one pivot table.  Not good.
-                    return false;
-            }
+            auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+                return pDPs->IntersectsTableByColumns(aRange.aStart.Col(), aRange.aEnd.Col(), aRange.aStart.Row(), rTab); });
+            if (bIntersects)
+                // This column range cuts through at least one pivot table.  Not good.
+                return false;
 
             ScRange aTest(aRange);
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+            for (const auto& rTab : rMarkData)
             {
-                aTest.aStart.SetTab(*it);
-                aTest.aEnd.SetTab(*it);
+                aTest.aStart.SetTab(rTab);
+                aTest.aEnd.SetTab(rTab);
                 if (pDPs->HasTable(aTest))
                     return false;
             }
@@ -1593,18 +1594,17 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const ScMarkData& rMarkData, D
         }
         case DelCellCmd::CellsLeft:
         {
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
-            {
-                if (pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), *it))
-                    // This column range cuts through at least one pivot table.  Not good.
-                    return false;
-            }
+            auto bIntersects = std::any_of(rMarkData.begin(), rMarkData.end(), [&pDPs, &aRange](const SCTAB& rTab) {
+                return pDPs->IntersectsTableByRows(aRange.aStart.Col(), aRange.aStart.Row(), aRange.aEnd.Row(), rTab); });
+            if (bIntersects)
+                // This column range cuts through at least one pivot table.  Not good.
+                return false;
 
             ScRange aTest(aRange);
-            for (ScMarkData::const_iterator it = itBeg; it != itEnd; ++it)
+            for (const auto& rTab : rMarkData)
             {
-                aTest.aStart.SetTab(*it);
-                aTest.aEnd.SetTab(*it);
+                aTest.aStart.SetTab(rTab);
+                aTest.aEnd.SetTab(rTab);
                 if (pDPs->HasTable(aTest))
                     return false;
             }
@@ -1675,7 +1675,6 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
     SCROW nPaintEndRow = nEndRow;
     PaintPartFlags nPaintFlags = PaintPartFlags::Grid;
     bool bSuccess;
-    SCTAB i;
 
     ScTabViewShell* pViewSh = rDocShell.GetBestViewShell();  //preserve current cursor position
     SCCOL nCursorCol = 0;
@@ -1695,7 +1694,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
     else
     {
         SCTAB nCount = 0;
-        for( i=0; i<nTabCount; i++ )
+        for( SCTAB i=0; i<nTabCount; i++ )
         {
             if( !rDoc.IsScenario(i) )
             {
@@ -1710,10 +1709,14 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
     }
 
     ScMarkData aFullMark( aMark );          // including scenario sheets
-    ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
-        for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+    for (const auto& rTab : aMark)
+    {
+        if (rTab >= nTabCount)
+            break;
+
+        for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
             aFullMark.SelectTable( j, true );
+    }
 
     SCTAB nSelCount = aMark.GetSelectCount();
 
@@ -1826,10 +1829,11 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
     }
     std::unique_ptr<ScUndoRemoveMerge> pUndoRemoveMerge;
 
-    itr = aMark.begin();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
+    for (const SCTAB i : aMark)
     {
-        i = *itr;
+        if (i >= nTabCount)
+            break;
+
         if( rDoc.HasAttrib( nMergeTestStartCol, nMergeTestStartRow, i, nMergeTestEndCol, nMergeTestEndRow, i, HasAttrFlags::Merged | HasAttrFlags::Overlapped ) )
         {
             if (eCmd==INS_CELLSRIGHT)
@@ -1937,9 +1941,8 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
                         pUndoRemoveMerge.reset( new ScUndoRemoveMerge( &rDocShell, rRange, std::move(pUndoDoc) ));
                     }
 
-                    for( ::std::vector<ScRange>::const_iterator iIter( qIncreaseRange.begin()); iIter != qIncreaseRange.end(); ++iIter )
+                    for( const ScRange& aRange : qIncreaseRange )
                     {
-                        ScRange aRange( *iIter );
                         if( rDoc.HasAttrib( aRange, HasAttrFlags::Overlapped | HasAttrFlags::Merged ) )
                         {
                             UnmergeCells( aRange, bRecord, pUndoRemoveMerge.get() );
@@ -2003,15 +2006,17 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
             std::unique_ptr<SCTAB[]> pTabs(new SCTAB[nSelCount]);
             std::unique_ptr<SCTAB[]> pScenarios(new SCTAB[nSelCount]);
             nUndoPos    = 0;
-            itr = aMark.begin();
-            for (; itr != itrEnd && *itr < nTabCount; ++itr)
+            for (const auto& rTab : aMark)
             {
+                if (rTab >= nTabCount)
+                    break;
+
                 SCTAB nCount = 0;
-                for( SCTAB j=*itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+                for( SCTAB j=rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
                     nCount ++;
 
                 pScenarios[nUndoPos] = nCount;
-                pTabs[nUndoPos] = *itr;
+                pTabs[nUndoPos] = rTab;
                 nUndoPos ++;
             }
 
@@ -2059,10 +2064,11 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
         if( bInsertMerge )
             rDocShell.GetUndoManager()->LeaveListAction();
 
-        itr = aMark.begin();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
+        for (const SCTAB i : aMark)
         {
-            i = *itr;
+            if (i >= nTabCount)
+                break;
+
             rDoc.SetDrawPageSize(i);
 
             if (bNeedRefresh)
@@ -2208,10 +2214,14 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
     }
 
     ScMarkData aFullMark( aMark );          // including scenario sheets
-    ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
-        for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+    for (const auto& rTab : aMark)
+    {
+        if (rTab >= nTabCount)
+            break;
+
+        for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
             aFullMark.SelectTable( j, true );
+    }
 
     SCTAB nSelCount = aMark.GetSelectCount();
 
@@ -2303,10 +2313,11 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
     }
     std::unique_ptr<ScUndoRemoveMerge> pUndoRemoveMerge;
 
-    itr = aMark.begin();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
+    for (const SCTAB i : aMark)
     {
-        SCTAB i = *itr;
+        if (i >= nTabCount)
+            break;
+
         if ( rDoc.HasAttrib( nUndoStartCol, nUndoStartRow, i, nMergeTestEndCol, nMergeTestEndRow, i, HasAttrFlags::Merged | HasAttrFlags::Overlapped ))
         {
             SCCOL nMergeStartCol = nUndoStartCol;
@@ -2417,9 +2428,8 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
                         pUndoRemoveMerge.reset( new ScUndoRemoveMerge( &rDocShell, rRange, std::move(pUndoDoc) ));
                     }
 
-                    for( ::std::vector<ScRange>::const_iterator iIter( qDecreaseRange.begin()); iIter != qDecreaseRange.end(); ++iIter )
+                    for( const ScRange& aRange : qDecreaseRange )
                     {
-                        ScRange aRange( *iIter );
                         if( rDoc.HasAttrib( aRange, HasAttrFlags::Overlapped | HasAttrFlags::Merged ) )
                         {
                             UnmergeCells( aRange, bRecord, pUndoRemoveMerge.get() );
@@ -2456,15 +2466,17 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
 
         pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
         pUndoDoc->InitUndo( &rDoc, 0, nTabCount-1, (eCmd==DelCellCmd::Cols), (eCmd==DelCellCmd::Rows) );
-        itr = aMark.begin();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
+        for (const auto& rTab : aMark)
         {
+            if (rTab >= nTabCount)
+                break;
+
             SCTAB nScenarioCount = 0;
 
-            for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+            for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
                 nScenarioCount ++;
 
-            rDoc.CopyToDocument( nUndoStartCol, nUndoStartRow, *itr, nUndoEndCol, nUndoEndRow, *itr+nScenarioCount,
+            rDoc.CopyToDocument( nUndoStartCol, nUndoStartRow, rTab, nUndoEndCol, nUndoEndRow, rTab+nScenarioCount,
                 InsertDeleteFlags::ALL | InsertDeleteFlags::NOCAPTIONS, false, *pUndoDoc );
         }
 
@@ -2477,10 +2489,12 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
     }
 
     sal_uInt16 nExtFlags = 0;
-    itr = aMark.begin();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
+    for (const auto& rTab : aMark)
     {
-        rDocShell.UpdatePaintExt( nExtFlags, nStartCol, nStartRow, *itr, nEndCol, nEndRow, *itr );
+        if (rTab >= nTabCount)
+            break;
+
+        rDocShell.UpdatePaintExt( nExtFlags, nStartCol, nStartRow, rTab, nEndCol, nEndRow, rTab );
     }
 
     bool bUndoOutline = false;
@@ -2517,10 +2531,13 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
 
     if ( bRecord )
     {
-        itr = aFullMark.begin();
-        itrEnd = aFullMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
-            pRefUndoDoc->DeleteAreaTab(nUndoStartCol,nUndoStartRow,nUndoEndCol,nUndoEndRow, *itr, InsertDeleteFlags::ALL);
+        for (const auto& rTab : aFullMark)
+        {
+            if (rTab >= nTabCount)
+                break;
+
+            pRefUndoDoc->DeleteAreaTab(nUndoStartCol,nUndoStartRow,nUndoEndCol,nUndoEndRow, rTab, InsertDeleteFlags::ALL);
+        }
 
             //  for all sheets, so that formulas can be copied
         pUndoDoc->AddUndoTab( 0, nTabCount-1 );
@@ -2533,16 +2550,17 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
         std::unique_ptr<SCTAB[]> pScenarios( new SCTAB[nSelCount]);
         SCTAB   nUndoPos  = 0;
 
-        itr = aMark.begin();
-        itrEnd = aMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
+        for (const auto& rTab : aMark)
         {
+            if (rTab >= nTabCount)
+                break;
+
             SCTAB nCount = 0;
-            for( SCTAB j=*itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+            for( SCTAB j=rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
                 nCount ++;
 
             pScenarios[nUndoPos] = nCount;
-            pTabs[nUndoPos] = *itr;
+            pTabs[nUndoPos] = rTab;
             nUndoPos ++;
         }
 
@@ -2624,53 +2642,56 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
 
         rDoc.ApplyPatternArea( nExtendStartCol, nExtendStartRow, nMergeTestEndCol, nMergeTestEndRow, aMark, aPattern );
 
-        itr = aMark.begin();
-        itrEnd = aMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
+        for (const auto& rTab : aMark)
         {
+            if (rTab >= nTabCount)
+                break;
+
             SCTAB nScenarioCount = 0;
 
-            for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+            for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
                 nScenarioCount ++;
 
-            ScRange aMergedRange( nExtendStartCol, nExtendStartRow, *itr, nMergeTestEndCol, nMergeTestEndRow, *itr+nScenarioCount );
+            ScRange aMergedRange( nExtendStartCol, nExtendStartRow, rTab, nMergeTestEndCol, nMergeTestEndRow, rTab+nScenarioCount );
             rDoc.ExtendMerge( aMergedRange, true );
         }
     }
 
-    itr = aMark.begin();
-    itrEnd = aMark.end();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
+    for (const auto& rTab : aMark)
     {
-        rDoc.RefreshAutoFilter( nExtendStartCol, nExtendStartRow, nMergeTestEndCol, nMergeTestEndRow, *itr );
+        if (rTab >= nTabCount)
+            break;
+
+        rDoc.RefreshAutoFilter( nExtendStartCol, nExtendStartRow, nMergeTestEndCol, nMergeTestEndRow, rTab );
     }
 
-    itr = aMark.begin();
-    itrEnd = aMark.end();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
+    for (const auto& rTab : aMark)
     {
-        rDoc.SetDrawPageSize(*itr);
+        if (rTab >= nTabCount)
+            break;
+
+        rDoc.SetDrawPageSize(rTab);
 
         if ( eCmd == DelCellCmd::Cols || eCmd == DelCellCmd::Rows )
-            rDoc.UpdatePageBreaks( *itr );
+            rDoc.UpdatePageBreaks( rTab );
 
-        rDocShell.UpdatePaintExt( nExtFlags, nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr );
+        rDocShell.UpdatePaintExt( nExtFlags, nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab );
 
         SCTAB nScenarioCount = 0;
 
-        for( SCTAB j = *itr+1; j<nTabCount && rDoc.IsScenario(j); j++ )
+        for( SCTAB j = rTab+1; j<nTabCount && rDoc.IsScenario(j); j++ )
             nScenarioCount ++;
 
         //  delete entire rows: do not adjust
-        if ( eCmd == DelCellCmd::Rows || !AdjustRowHeight(ScRange( 0, nPaintStartRow, *itr, MAXCOL, nPaintEndRow, *itr+nScenarioCount )) )
-            rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr+nScenarioCount, nPaintFlags,  nExtFlags );
+        if ( eCmd == DelCellCmd::Rows || !AdjustRowHeight(ScRange( 0, nPaintStartRow, rTab, MAXCOL, nPaintEndRow, rTab+nScenarioCount )) )
+            rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab+nScenarioCount, nPaintFlags,  nExtFlags );
         else
         {
             //  paint only what is not done by AdjustRowHeight
             if (nExtFlags & SC_PF_LINES)
-                lcl_PaintAbove( rDocShell, ScRange( nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr+nScenarioCount) );
+                lcl_PaintAbove( rDocShell, ScRange( nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab+nScenarioCount) );
             if (nPaintFlags & PaintPartFlags::Top)
-                rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, *itr, nPaintEndCol, nPaintEndRow, *itr+nScenarioCount, PaintPartFlags::Top );
+                rDocShell.PostPaint( nPaintStartCol, nPaintStartRow, rTab, nPaintEndCol, nPaintEndRow, rTab+nScenarioCount, PaintPartFlags::Top );
         }
     }
 
@@ -4020,10 +4041,14 @@ bool ScDocFunc::ChangeIndent( const ScMarkData& rMark, bool bIncrement, bool bAp
 
         ScDocumentUniquePtr pUndoDoc(new ScDocument( SCDOCMODE_UNDO ));
         pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab );
-        ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
-            if (*itr != nStartTab)
-                pUndoDoc->AddUndoTab( *itr, *itr );
+        for (const auto& rTab : rMark)
+        {
+            if (rTab >= nTabCount)
+                break;
+
+            if (rTab != nStartTab)
+                pUndoDoc->AddUndoTab( rTab, rTab );
+        }
 
         ScRange aCopyRange = aMarkRange;
         aCopyRange.aStart.SetTab(0);
@@ -4101,10 +4126,14 @@ bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
         {
             pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
             pUndoDoc->InitUndo( &rDoc, nStartTab, nStartTab, bSize, bSize );
-            ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-            for (; itr != itrEnd && *itr < nTabCount; ++itr)
-                if (*itr != nStartTab)
-                    pUndoDoc->AddUndoTab( *itr, *itr, bSize, bSize );
+            for (const auto& rTab : aMark)
+            {
+                if (rTab >= nTabCount)
+                    break;
+
+                if (rTab != nStartTab)
+                    pUndoDoc->AddUndoTab( rTab, rTab, bSize, bSize );
+            }
 
             ScRange aCopyRange = rRange;
             aCopyRange.aStart.SetTab(0);
@@ -4127,28 +4156,32 @@ bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
             std::vector<sc::ColRowSpan> aCols(1, sc::ColRowSpan(nStartCol,nEndCol));
             std::vector<sc::ColRowSpan> aRows(1, sc::ColRowSpan(nStartRow,nEndRow));
 
-            ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-            for (; itr != itrEnd && *itr < nTabCount; ++itr)
+            for (const auto& rTab : aMark)
             {
-                SetWidthOrHeight(true, aCols, *itr, SC_SIZE_VISOPT, STD_EXTRA_WIDTH, false, true);
-                SetWidthOrHeight(false, aRows, *itr, SC_SIZE_VISOPT, 0, false, false);
-                rDocShell.PostPaint( 0,0,*itr, MAXCOL,MAXROW,*itr,
+                if (rTab >= nTabCount)
+                    break;
+
+                SetWidthOrHeight(true, aCols, rTab, SC_SIZE_VISOPT, STD_EXTRA_WIDTH, false, true);
+                SetWidthOrHeight(false, aRows, rTab, SC_SIZE_VISOPT, 0, false, false);
+                rDocShell.PostPaint( 0,0,rTab, MAXCOL,MAXROW,rTab,
                                 PaintPartFlags::Grid | PaintPartFlags::Left | PaintPartFlags::Top );
             }
         }
         else
         {
-            ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-            for (; itr != itrEnd && *itr < nTabCount; ++itr)
+            for (const auto& rTab : aMark)
             {
-                bool bAdj = AdjustRowHeight( ScRange(nStartCol, nStartRow, *itr,
-                                                    nEndCol, nEndRow, *itr), false );
+                if (rTab >= nTabCount)
+                    break;
+
+                bool bAdj = AdjustRowHeight( ScRange(nStartCol, nStartRow, rTab,
+                                                    nEndCol, nEndRow, rTab), false );
                 if (bAdj)
-                    rDocShell.PostPaint( 0,nStartRow,*itr, MAXCOL,MAXROW,*itr,
+                    rDocShell.PostPaint( 0,nStartRow,rTab, MAXCOL,MAXROW,rTab,
                                         PaintPartFlags::Grid | PaintPartFlags::Left );
                 else
-                    rDocShell.PostPaint( nStartCol, nStartRow, *itr,
-                                        nEndCol, nEndRow, *itr, PaintPartFlags::Grid );
+                    rDocShell.PostPaint( nStartCol, nStartRow, rTab,
+                                        nEndCol, nEndRow, rTab, PaintPartFlags::Grid );
             }
         }
 
@@ -4461,10 +4494,14 @@ bool ScDocFunc::FillSimple( const ScRange& rRange, const ScMarkData* pTabMark,
 
             pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
             pUndoDoc->InitUndo( &rDoc, nDestStartTab, nDestStartTab );
-            ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-            for (; itr != itrEnd && *itr < nTabCount; ++itr)
-                if (*itr != nDestStartTab)
-                    pUndoDoc->AddUndoTab( *itr, *itr );
+            for (const auto& rTab : aMark)
+            {
+                if (rTab >= nTabCount)
+                    break;
+
+                if (rTab != nDestStartTab)
+                    pUndoDoc->AddUndoTab( rTab, rTab );
+            }
 
             ScRange aCopyRange = aDestArea;
             aCopyRange.aStart.SetTab(0);
@@ -4577,10 +4614,14 @@ bool ScDocFunc::FillSeries( const ScRange& rRange, const ScMarkData* pTabMark,
 
             pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
             pUndoDoc->InitUndo( &rDoc, nDestStartTab, nDestStartTab );
-            ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-            for (; itr != itrEnd && *itr < nTabCount; ++itr)
-                if (*itr != nDestStartTab)
-                    pUndoDoc->AddUndoTab( *itr, *itr );
+            for (const auto& rTab : aMark)
+            {
+                if (rTab >= nTabCount)
+                    break;
+
+                if (rTab != nDestStartTab)
+                    pUndoDoc->AddUndoTab( rTab, rTab );
+            }
 
             rDoc.CopyToDocument(
                 aDestArea.aStart.Col(), aDestArea.aStart.Row(), 0,
@@ -4729,10 +4770,14 @@ bool ScDocFunc::FillAuto( ScRange& rRange, const ScMarkData* pTabMark, FillDir e
 
         pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
         pUndoDoc->InitUndo( &rDoc, nDestStartTab, nDestStartTab );
-        ScMarkData::iterator itr = aMark.begin(), itrEnd = aMark.end();
-        for (; itr != itrEnd && *itr < nTabCount; ++itr)
-            if (*itr != nDestStartTab)
-                pUndoDoc->AddUndoTab( *itr, *itr );
+        for (const auto& rTab : aMark)
+        {
+            if (rTab >= nTabCount)
+                break;
+
+            if (rTab != nDestStartTab)
+                pUndoDoc->AddUndoTab( rTab, rTab );
+        }
 
         // do not clone note captions in undo document
         rDoc.CopyToDocument(
@@ -4787,15 +4832,14 @@ bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, bool bContents, bo
     }
 
     ScDocument& rDoc = rDocShell.GetDocument();
-    set<SCTAB>::const_iterator itrBeg = rOption.maTabs.begin(), itrEnd = rOption.maTabs.end();
-    SCTAB nTab1 = *itrBeg, nTab2 = *rOption.maTabs.rbegin();
+    SCTAB nTab1 = *rOption.maTabs.begin(), nTab2 = *rOption.maTabs.rbegin();
 
     if (bRecord && !rDoc.IsUndoEnabled())
         bRecord = false;
 
-    for (set<SCTAB>::const_iterator itr = itrBeg; itr != itrEnd; ++itr)
+    for (const auto& rTab : rOption.maTabs)
     {
-        ScEditableTester aTester( &rDoc, *itr, nStartCol, nStartRow, nEndCol, nEndRow );
+        ScEditableTester aTester( &rDoc, rTab, nStartCol, nStartRow, nEndCol, nEndRow );
         if (!aTester.IsEditable())
         {
             if (!bApi)
@@ -4803,7 +4847,7 @@ bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, bool bContents, bo
             return false;
         }
 
-        if ( rDoc.HasAttrib( nStartCol, nStartRow, *itr, nEndCol, nEndRow, *itr,
+        if ( rDoc.HasAttrib( nStartCol, nStartRow, rTab, nEndCol, nEndRow, rTab,
                                 HasAttrFlags::Merged | HasAttrFlags::Overlapped ) )
         {
             // "Merge of already merged cells not possible"
@@ -4815,9 +4859,8 @@ bool ScDocFunc::MergeCells( const ScCellMergeOption& rOption, bool bContents, bo
 
     ScDocumentUniquePtr pUndoDoc;
     bool bNeedContentsUndo = false;
-    for (set<SCTAB>::const_iterator itr = itrBeg; itr != itrEnd; ++itr)
+    for (const SCTAB nTab : rOption.maTabs)
     {
-        SCTAB nTab = *itr;
         bool bIsBlockEmpty = ( nStartRow == nEndRow )
                              ? rDoc.IsBlockEmpty( nTab, nStartCol+1,nStartRow, nEndCol,nEndRow, true )
                              : rDoc.IsBlockEmpty( nTab, nStartCol,nStartRow+1, nStartCol,nEndRow, true ) &&
@@ -4915,10 +4958,8 @@ bool ScDocFunc::UnmergeCells( const ScCellMergeOption& rOption, bool bRecord, Sc
 
     ScDocument* pUndoDoc = (pUndoRemoveMerge ? pUndoRemoveMerge->GetUndoDoc() : nullptr);
     assert( pUndoDoc || !pUndoRemoveMerge );
-    for (set<SCTAB>::const_iterator itr = rOption.maTabs.begin(), itrEnd = rOption.maTabs.end();
-          itr != itrEnd; ++itr)
+    for (const SCTAB nTab : rOption.maTabs)
     {
-        SCTAB nTab = *itr;
         ScRange aRange = rOption.getSingleRange(nTab);
         if ( !rDoc.HasAttrib(aRange, HasAttrFlags::Merged) )
             continue;
@@ -5216,18 +5257,16 @@ bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, bool bApi )
     //local names have higher priority than global names
     ScRangeName* pLocalList = rDoc.GetRangeName(nTab);
     sal_uInt16 nValidCount = 0;
-    ScRangeName::iterator itrLocalBeg = pLocalList->begin(), itrLocalEnd = pLocalList->end();
-    for (ScRangeName::iterator itr = itrLocalBeg; itr != itrLocalEnd; ++itr)
+    for (const auto& rEntry : *pLocalList)
     {
-        const ScRangeData& r = *itr->second;
+        const ScRangeData& r = *rEntry.second;
         if (!r.HasType(ScRangeData::Type::Database))
             ++nValidCount;
     }
     ScRangeName* pList = rDoc.GetRangeName();
-    ScRangeName::iterator itrBeg = pList->begin(), itrEnd = pList->end();
-    for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr)
+    for (const auto& rEntry : *pList)
     {
-        const ScRangeData& r = *itr->second;
+        const ScRangeData& r = *rEntry.second;
         if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(r.GetUpperName()))
             ++nValidCount;
     }
@@ -5256,16 +5295,16 @@ bool ScDocFunc::InsertNameList( const ScAddress& rStartPos, bool bApi )
 
             std::unique_ptr<ScRangeData*[]> ppSortArray(new ScRangeData* [ nValidCount ]);
             sal_uInt16 j = 0;
-            for (ScRangeName::iterator itr = itrLocalBeg; itr != itrLocalEnd; ++itr)
+            for (const auto& rEntry : *pLocalList)
             {
-                ScRangeData& r = *itr->second;
+                ScRangeData& r = *rEntry.second;
                 if (!r.HasType(ScRangeData::Type::Database))
                     ppSortArray[j++] = &r;
             }
-            for (ScRangeName::iterator itr = itrBeg; itr != itrEnd; ++itr)
+            for (const auto& [rName, rxData] : *pList)
             {
-                ScRangeData& r = *itr->second;
-                if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(itr->first))
+                ScRangeData& r = *rxData;
+                if (!r.HasType(ScRangeData::Type::Database) && !pLocalList->findByUpperName(rName))
                     ppSortArray[j++] = &r;
             }
             qsort( static_cast<void*>(ppSortArray.get()), nValidCount, sizeof(ScRangeData*),
diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx
index a2559ee562e2..5b51625f369c 100644
--- a/sc/source/ui/docshell/docfuncutil.cxx
+++ b/sc/source/ui/docshell/docfuncutil.cxx
@@ -35,10 +35,14 @@ namespace sc {
 bool DocFuncUtil::hasProtectedTab( const ScDocument& rDoc, const ScMarkData& rMark )
 {
     SCTAB nTabCount = rDoc.GetTableCount();
-    ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
-        if (rDoc.IsTabProtected(*itr))
+    for (const auto& rTab : rMark)
+    {
+        if (rTab >= nTabCount)
+            break;
+
+        if (rDoc.IsTabProtected(rTab))
             return true;
+    }
 
     return false;
 }
@@ -51,10 +55,9 @@ ScDocumentUniquePtr DocFuncUtil::createDeleteContentsUndoDoc(
     SCTAB nTab = rRange.aStart.Tab();
     pUndoDoc->InitUndo(&rDoc, nTab, nTab);
     SCTAB nTabCount = rDoc.GetTableCount();
-    ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
-    for (; itr != itrEnd; ++itr)
-        if (*itr != nTab)
-            pUndoDoc->AddUndoTab( *itr, *itr );
+    for (const auto& rTab : rMark)
+        if (rTab != nTab)
+            pUndoDoc->AddUndoTab( rTab, rTab );
     ScRange aCopyRange = rRange;
     aCopyRange.aStart.SetTab(0);
     aCopyRange.aEnd.SetTab(nTabCount-1);
@@ -93,11 +96,8 @@ std::unique_ptr<ScSimpleUndo::DataSpansType> DocFuncUtil::getNonEmptyCellSpans(
     const ScDocument& rDoc, const ScMarkData& rMark, const ScRange& rRange )
 {
     std::unique_ptr<ScSimpleUndo::DataSpansType> pDataSpans(new ScSimpleUndo::DataSpansType);
-    ScMarkData::const_iterator it = rMark.begin(), itEnd = rMark.end();
-    for (; it != itEnd; ++it)
+    for (const SCTAB nTab : rMark)
     {
-        SCTAB nTab = *it;
-
         SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col();
         SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
 
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index adcc96feeae9..7f45f9964084 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -2999,10 +2999,8 @@ namespace {
 
 void removeKeysIfExists(const Reference<ui::XAcceleratorConfiguration>& xScAccel, const vector<const awt::KeyEvent*>& rKeys)
 {
-    vector<const awt::KeyEvent*>::const_iterator itr = rKeys.begin(), itrEnd = rKeys.end();
-    for (; itr != itrEnd; ++itr)
+    for (const awt::KeyEvent* p : rKeys)
     {
-        const awt::KeyEvent* p = *itr;
         if (!p)
             continue;
 
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 11f240c9d2f8..d937275a3a55 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -535,10 +535,9 @@ void ScDocShell::Execute( SfxRequest& rReq )
                         if (xQueryBox->run() == RET_YES)
                         {
                             ScDBCollection::NamedDBs& rDBs = pDBColl->getNamedDBs();
-                            ScDBCollection::NamedDBs::iterator itr = rDBs.begin(), itrEnd = rDBs.end();
-                            for (; itr != itrEnd; ++itr)
+                            for (const auto& rxDB : rDBs)
                             {
-                                ScDBData& rDBData = **itr;
+                                ScDBData& rDBData = *rxDB;
                                 if ( rDBData.IsStripData() &&
                                      rDBData.HasImportParam() && !rDBData.HasImportSelection() )
                                 {
diff --git a/sc/source/ui/docshell/documentlinkmgr.cxx b/sc/source/ui/docshell/documentlinkmgr.cxx
index 7452f87d3ce7..479d1b0e56b2 100644
--- a/sc/source/ui/docshell/documentlinkmgr.cxx
+++ b/sc/source/ui/docshell/documentlinkmgr.cxx
@@ -52,8 +52,8 @@ struct DocumentLinkManagerImpl
         if (linkManager)
         {
             sfx2::SvLinkSources aTemp = linkManager->GetServers();
-            for (sfx2::SvLinkSources::const_iterator it = aTemp.begin(); it != aTemp.end(); ++it)
-                (*it)->Closed();
+            for (const auto& pLinkSource : aTemp)
+                pLinkSource->Closed();
 
             if (!linkManager->GetLinks().empty())
                 linkManager->Remove(0, linkManager->GetLinks().size());
diff --git a/sc/source/ui/docshell/editable.cxx b/sc/source/ui/docshell/editable.cxx
index 3b0f58ee653f..b66d47e77442 100644
--- a/sc/source/ui/docshell/editable.cxx
+++ b/sc/source/ui/docshell/editable.cxx
@@ -100,9 +100,13 @@ void ScEditableTester::TestSelectedBlock( const ScDocument* pDoc,
                         const ScMarkData& rMark )
 {
     SCTAB nTabCount = pDoc->GetTableCount();
-    ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
-    for (; itr != itrEnd && *itr < nTabCount; ++itr)
-        TestBlock( pDoc, *itr, nStartCol, nStartRow, nEndCol, nEndRow );
+    for (const auto& rTab : rMark)
+    {
+        if (rTab >= nTabCount)
+            break;
+
+        TestBlock( pDoc, rTab, nStartCol, nStartRow, nEndCol, nEndRow );
+    }
 }
 
 void ScEditableTester::TestRange(  const ScDocument* pDoc, const ScRange& rRange )
@@ -137,12 +141,12 @@ void ScEditableTester::TestBlockForAction(
 {
     mbOnlyMatrix = false;
 
-    for (ScMarkData::const_iterator it = rMark.begin(), itEnd = rMark.end(); it != itEnd; ++it)
+    for (const auto& rTab : rMark)
     {
         if (!mbIsEditable)
             return;
 
-        mbIsEditable = rDoc.IsEditActionAllowed(eAction, *it, nStart, nEnd);
+        mbIsEditable = rDoc.IsEditActionAllowed(eAction, rTab, nStart, nEnd);
     }
 }
 
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index c7086d6b70d1..3d4b93f323b4 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -336,10 +336,9 @@ void ScExternalRefCache::Table::getAllRows(vector<SCROW>& rRows, SCROW nLow, SCR
 {
     vector<SCROW> aRows;
     aRows.reserve(maRows.size());
-    RowsDataType::const_iterator itr = maRows.begin(), itrEnd = maRows.end();
-    for (; itr != itrEnd; ++itr)
-        if (nLow <= itr->first && itr->first <= nHigh)
-            aRows.push_back(itr->first);
+    for (const auto& rEntry : maRows)
+        if (nLow <= rEntry.first && rEntry.first <= nHigh)
+            aRows.push_back(rEntry.first);
 
     // hash map is not ordered, so we need to explicitly sort it.
     ::std::sort(aRows.begin(), aRows.end());
@@ -352,16 +351,10 @@ void ScExternalRefCache::Table::getAllRows(vector<SCROW>& rRows, SCROW nLow, SCR
     if( !maRows.empty() )
     {
         // iterate over entire container (hash map is not sorted by key)
-        RowsDataType::const_iterator itr = maRows.begin(), itrEnd = maRows.end();
-        aRange.first = itr->first;
-        aRange.second = itr->first + 1;
-        while( ++itr != itrEnd )
-        {
-            if( itr->first < aRange.first )
-                aRange.first = itr->first;
-            else if( itr->first >= aRange.second )
-                aRange.second = itr->first + 1;
-        }
+        auto itMinMax = std::minmax_element(maRows.begin(), maRows.end(),
+            [](const RowsDataType::value_type& a, const RowsDataType::value_type& b) { return a.first < b.first; });
+        aRange.first = itMinMax.first->first;
+        aRange.second = itMinMax.second->first + 1;
     }
     return aRange;
 }
@@ -376,10 +369,9 @@ void ScExternalRefCache::Table::getAllCols(SCROW nRow, vector<SCCOL>& rCols, SCC
     const RowDataType& rRowData = itrRow->second;
     vector<SCCOL> aCols;
     aCols.reserve(rRowData.size());
-    RowDataType::const_iterator itrCol = rRowData.begin(), itrColEnd = rRowData.end();
-    for (; itrCol != itrColEnd; ++itrCol)
-        if (nLow <= itrCol->first && itrCol->first <= nHigh)
-            aCols.push_back(itrCol->first);
+    for (const auto& rCol : rRowData)
+        if (nLow <= rCol.first && rCol.first <= nHigh)
+            aCols.push_back(rCol.first);
 
     // hash map is not ordered, so we need to explicitly sort it.
     ::std::sort(aCols.begin(), aCols.end());
@@ -399,30 +391,22 @@ void ScExternalRefCache::Table::getAllCols(SCROW nRow, vector<SCCOL>& rCols, SCC
     if( !rRowData.empty() )
     {
         // iterate over entire container (hash map is not sorted by key)
-        RowDataType::const_iterator itr = rRowData.begin(), itrEnd = rRowData.end();
-        aRange.first = itr->first;
-        aRange.second = itr->first + 1;
-        while( ++itr != itrEnd )
-        {
-            if( itr->first < aRange.first )
-                aRange.first = itr->first;
-            else if( itr->first >= aRange.second )
-                aRange.second = itr->first + 1;
-        }
+        auto itMinMax = std::minmax_element(rRowData.begin(), rRowData.end(),
+            [](const RowDataType::value_type& a, const RowDataType::value_type& b) { return a.first < b.first; });
+        aRange.first = itMinMax.first->first;
+        aRange.second = itMinMax.second->first + 1;
     }
     return aRange;
 }
 
 void ScExternalRefCache::Table::getAllNumberFormats(vector<sal_uInt32>& rNumFmts) const
 {
-    RowsDataType::const_iterator itrRow = maRows.begin(), itrRowEnd = maRows.end();
-    for (; itrRow != itrRowEnd; ++itrRow)
+    for (const auto& rRow : maRows)
     {
-        const RowDataType& rRowData = itrRow->second;
-        RowDataType::const_iterator itrCol = rRowData.begin(), itrColEnd = rRowData.end();
-        for (; itrCol != itrColEnd; ++itrCol)
+        const RowDataType& rRowData = rRow.second;
+        for (const auto& rCol : rRowData)
         {
-            const Cell& rCell = itrCol->second;
+            const Cell& rCell = rCol.second;
             rNumFmts.push_back(rCell.mnFmtIndex);
         }
     }
@@ -642,10 +626,10 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
                 nDataRow2 = aRows.back();
                 SCCOL nMinCol = std::numeric_limits<SCCOL>::max();
                 SCCOL nMaxCol = std::numeric_limits<SCCOL>::min();
-                for (vector<SCROW>::const_iterator itr = aRows.begin(), itrEnd = aRows.end(); itr != itrEnd; ++itr)
+                for (const auto& rRow : aRows)
                 {
                     vector<SCCOL> aCols;
-                    pTab->getAllCols(*itr, aCols, nDataCol1, nDataCol2);
+                    pTab->getAllCols(rRow, aCols, nDataCol1, nDataCol2);
                     if (!aCols.empty())
                     {
                         nMinCol = std::min( nMinCol, aCols.front());
@@ -673,14 +657,12 @@ ScExternalRefCache::TokenArrayRef ScExternalRefCache::getCellRangeData(
         if (bFill)
         {
             // Only fill non-empty cells, for better performance.
-            for (vector<SCROW>::const_iterator itr = aRows.begin(), itrEnd = aRows.end(); itr != itrEnd; ++itr)
+            for (SCROW nRow : aRows)
             {
-                SCROW nRow = *itr;
                 vector<SCCOL> aCols;
                 pTab->getAllCols(nRow, aCols, nDataCol1, nDataCol2);
-                for (vector<SCCOL>::const_iterator itrCol = aCols.begin(), itrColEnd = aCols.end(); itrCol != itrColEnd; ++itrCol)
+                for (SCCOL nCol : aCols)
                 {
-                    SCCOL nCol = *itrCol;
                     TokenRef pToken = pTab->getCell(nCol, nRow);
                     if (!pToken)
                         // This should never happen!
@@ -834,15 +816,14 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
     size_t nTabFirstId = itrTabName->second;
     SCROW nRow1 = rRange.aStart.Row(), nRow2 = rRange.aEnd.Row();
     SCCOL nCol1 = rRange.aStart.Col(), nCol2 = rRange.aEnd.Col();
-    vector<SingleRangeData>::const_iterator itrDataBeg = rData.begin(), itrDataEnd = rData.end();
-    for (vector<SingleRangeData>::const_iterator itrData = itrDataBeg; itrData != itrDataEnd; ++itrData)
+    size_t i = nTabFirstId;
+    for (const auto& rItem : rData)
     {
-        size_t i = nTabFirstId + ::std::distance(itrDataBeg, itrData);
         TableTypeRef& pTabData = rDoc.maTables[i];
         if (!pTabData.get())
             pTabData.reset(new Table);
 
-        const ScMatrixRef& pMat = itrData->mpRangeData;
+        const ScMatrixRef& pMat = rItem.mpRangeData;
         SCSIZE nMatCols, nMatRows;
         pMat->GetDimensions( nMatCols, nMatRows);
         if (nMatCols > static_cast<SCSIZE>(nCol2 - nCol1) && nMatRows > static_cast<SCSIZE>(nRow2 - nRow1))
@@ -883,6 +864,7 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
                         (nErr == FormulaError::MatrixSize ? ", ok" : ", not ok"));
             }
         }
+        ++i;
     }
 
     size_t nTabLastId = nTabFirstId + rRange.aEnd.Tab() - rRange.aStart.Tab();
@@ -945,10 +927,9 @@ void ScExternalRefCache::initializeDoc(sal_uInt16 nFileId, const vector<OUString
     // when loading cached data from, say, Excel XCT/CRN records.
     vector<TableName> aNewTabNames;
     aNewTabNames.reserve(n);
-    for (vector<OUString>::const_iterator itr = rTabNames.begin(), itrEnd = rTabNames.end();
-          itr != itrEnd; ++itr)
+    for (const auto& rTabName : rTabNames)
     {
-        TableName aNameItem(ScGlobal::pCharClass->uppercase(*itr), *itr);
+        TableName aNameItem(ScGlobal::pCharClass->uppercase(rTabName), rTabName);
         aNewTabNames.push_back(aNameItem);
     }
     pDoc->maTableNames.swap(aNewTabNames);
@@ -1065,9 +1046,8 @@ void ScExternalRefCache::getAllTableNames(sal_uInt16 nFileId, vector<OUString>&
 
     size_t n = pDoc->maTableNames.size();
     rTabNames.reserve(n);
-    for (vector<TableName>::const_iterator itr = pDoc->maTableNames.begin(), itrEnd = pDoc->maTableNames.end();
-          itr != itrEnd; ++itr)
-        rTabNames.push_back(itr->maRealName);
+    for (const auto& rTableName : pDoc->maTableNames)
+        rTabNames.push_back(rTableName.maRealName);
 }
 
 SCTAB ScExternalRefCache::getTabSpan( sal_uInt16 nFileId, const OUString& rStartTabName, const OUString& rEndTabName ) const
@@ -1102,14 +1082,11 @@ void ScExternalRefCache::getAllNumberFormats(vector<sal_uInt32>& rNumFmts) const
     using ::std::unique;
 
     vector<sal_uInt32> aNumFmts;
-    for (DocDataType::const_iterator itrDoc = maDocs.begin(), itrDocEnd = maDocs.end();
-          itrDoc != itrDocEnd; ++itrDoc)
+    for (const auto& rEntry : maDocs)
     {
-        const vector<TableTypeRef>& rTables = itrDoc->second.maTables;
-        for (vector<TableTypeRef>::const_iterator itrTab = rTables.begin(), itrTabEnd = rTables.end();
-              itrTab != itrTabEnd; ++itrTab)
+        const vector<TableTypeRef>& rTables = rEntry.second.maTables;
+        for (const TableTypeRef& pTab : rTables)
         {
-            TableTypeRef pTab = *itrTab;
             if (!pTab)
                 continue;
 
@@ -1129,11 +1106,10 @@ bool ScExternalRefCache::setCacheDocReferenced( sal_uInt16 nFileId )
     if (!pDocItem)
         return areAllCacheTablesReferenced();
 
-    for (::std::vector<TableTypeRef>::iterator itrTab = pDocItem->maTables.begin();
-            itrTab != pDocItem->maTables.end(); ++itrTab)
+    for (auto& rxTab : pDocItem->maTables)
     {
-        if ((*itrTab).get())
-            (*itrTab)->setReferenced( true);
+        if (rxTab.get())
+            rxTab->setReferenced(true);
     }
     addCacheDocToReferenced( nFileId);
     return areAllCacheTablesReferenced();
@@ -1172,31 +1148,27 @@ void ScExternalRefCache::setAllCacheTableReferencedStati( bool bReferenced )
     if (bReferenced)
     {
         maReferenced.reset(0);
-        for (DocDataType::iterator itrDoc = maDocs.begin(); itrDoc != maDocs.end(); ++itrDoc)
+        for (auto& rEntry : maDocs)
         {
-            ScExternalRefCache::DocItem& rDocItem = (*itrDoc).second;
-            for (::std::vector<TableTypeRef>::iterator itrTab = rDocItem.maTables.begin();
-                    itrTab != rDocItem.maTables.end(); ++itrTab)
+            ScExternalRefCache::DocItem& rDocItem = rEntry.second;
+            for (auto& rxTab : rDocItem.maTables)
             {
-                if ((*itrTab).get())
-                    (*itrTab)->setReferenced( true);
+                if (rxTab.get())
+                    rxTab->setReferenced(true);
             }
         }
     }
     else
     {
         size_t nDocs = 0;
-        for (DocDataType::const_iterator itrDoc = maDocs.begin(); itrDoc != maDocs.end(); ++itrDoc)
-        {
-            if (nDocs <= (*itrDoc).first)
-                nDocs  = (*itrDoc).first + 1;
-        }
+        auto itrMax = std::max_element(maDocs.begin(), maDocs.end(),
+            [](const DocDataType::value_type& a, const DocDataType::value_type& b) { return a.first < b.first; });
+        if (itrMax != maDocs.end())
+            nDocs = itrMax->first + 1;
         maReferenced.reset( nDocs);
 
-        for (DocDataType::iterator itrDoc = maDocs.begin(); itrDoc != maDocs.end(); ++itrDoc)
+        for (auto& [nFileId, rDocItem] : maDocs)
         {
-            ScExternalRefCache::DocItem& rDocItem = (*itrDoc).second;
-            sal_uInt16 nFileId = (*itrDoc).first;
             size_t nTables = rDocItem.maTables.size();
             ReferencedStatus::DocReferenced & rDocReferenced = maReferenced.maDocs[nFileId];
             // All referenced => non-existing tables evaluate as completed.
@@ -1274,16 +1246,12 @@ void ScExternalRefCache::getAllCachedDataSpans( sal_uInt16 nFileId, sc::ColumnSp
 
         std::vector<SCROW> aRows;
         pTab->getAllRows(aRows);
-        std::vector<SCROW>::const_iterator itRow = aRows.begin(), itRowEnd = aRows.end();
-        for (; itRow != itRowEnd; ++itRow)
+        for (SCROW nRow : aRows)
         {
-            SCROW nRow = *itRow;
             std::vector<SCCOL> aCols;
             pTab->getAllCols(nRow, aCols);
-            std::vector<SCCOL>::const_iterator itCol = aCols.begin(), itColEnd = aCols.end();
-            for (; itCol != itColEnd; ++itCol)
+            for (SCCOL nCol : aCols)
             {
-                SCCOL nCol = *itCol;
                 rSet.set(nTab, nCol, nRow, true);
             }
         }
@@ -1314,12 +1282,8 @@ void ScExternalRefCache::ReferencedStatus::reset( size_t nDocs )
 
 void ScExternalRefCache::ReferencedStatus::checkAllDocs()
 {
-    for (DocReferencedVec::const_iterator itr = maDocs.begin(); itr != maDocs.end(); ++itr)
-    {
-        if (!(*itr).mbAllTablesReferenced)
-            return;
-    }
-    mbAllReferenced = true;
+    if (std::all_of(maDocs.begin(), maDocs.end(), [](const DocReferenced& rDoc) { return rDoc.mbAllTablesReferenced; }))
+        mbAllReferenced = true;
 }
 
 ScExternalRefCache::TableTypeRef ScExternalRefCache::getCacheTable(sal_uInt16 nFileId, size_t nTabIndex) const
@@ -1739,11 +1703,13 @@ sal_uInt16 ScExternalRefManager::getExternalFileCount() const
 void ScExternalRefManager::markUsedByLinkListeners()
 {
     bool bAllMarked = false;
-    for (LinkListenerMap::const_iterator itr = maLinkListeners.begin();
-            itr != maLinkListeners.end() && !bAllMarked; ++itr)
+    for (const auto& [rFileId, rLinkListeners] : maLinkListeners)
     {
-        if (!(*itr).second.empty())
-            bAllMarked = maRefCache.setCacheDocReferenced( (*itr).first);
+        if (!rLinkListeners.empty())
+            bAllMarked = maRefCache.setCacheDocReferenced(rFileId);
+
+        if (bAllMarked)
+            break;
         /* TODO: LinkListeners should remember the table they're listening to.
          * As is, listening to one table will mark all tables of the document
          * being referenced. */
@@ -1752,13 +1718,10 @@ void ScExternalRefManager::markUsedByLinkListeners()
 
 void ScExternalRefManager::markUsedExternalRefCells()
 {
-    RefCellMap::iterator itr = maRefCells.begin(), itrEnd = maRefCells.end();
-    for (; itr != itrEnd; ++itr)
+    for (const auto& rEntry : maRefCells)
     {
-        RefCellSet::iterator itrCell = itr->second.begin(), itrCellEnd = itr->second.end();
-        for (; itrCell != itrCellEnd; ++itrCell)
+        for (ScFormulaCell* pCell : rEntry.second)
         {
-            ScFormulaCell* pCell = *itrCell;
             bool bUsed = pCell->MarkUsedExternalReferences();
             if (bUsed)
                 // Return true when at least one cell references external docs.
@@ -2196,11 +2159,8 @@ bool ScExternalRefManager::hasCellExternalReference(const ScAddress& rCell)
     ScFormulaCell* pCell = mpDoc->GetFormulaCell(rCell);
 
     if (pCell)
-      for (RefCellMap::iterator itr = maRefCells.begin(); itr != maRefCells.end(); ++itr)
-      {
-          if (itr->second.find(pCell) != itr->second.end())
-              return true;
-      }
+        return std::any_of(maRefCells.begin(), maRefCells.end(),
+            [&pCell](const RefCellMap::value_type& rEntry) { return rEntry.second.find(pCell) != rEntry.second.end(); });
 
     return false;
 }
@@ -2215,9 +2175,8 @@ void ScExternalRefManager::enableDocTimer( bool bEnable )
     {
         if (!maDocShells.empty())
         {
-            DocShellMap::iterator it = maDocShells.begin(), itEnd = maDocShells.end();
-            for (; it != itEnd; ++it)
-                it->second.maLastAccess = tools::Time(tools::Time::SYSTEM);
+            for (auto& rEntry : maDocShells)
+                rEntry.second.maLastAccess = tools::Time(tools::Time::SYSTEM);
 
             maSrcDocTimer.Start();
         }
@@ -2757,10 +2716,8 @@ std::vector<OUString> ScExternalRefManager::getAllCachedExternalFileNames() cons
 {
     std::vector<OUString> aNames;
     aNames.reserve(maSrcFiles.size());
-    std::vector<SrcFileData>::const_iterator it = maSrcFiles.begin(), itEnd = maSrcFiles.end();
-    for (; it != itEnd; ++it)
+    for (const SrcFileData& rData : maSrcFiles)
     {
-        const SrcFileData& rData = *it;
         aNames.push_back(rData.maFileName);
     }
 
@@ -3023,9 +2980,8 @@ void ScExternalRefManager::setFilterData(sal_uInt16 nFileId, const OUString& rFi
 
 void ScExternalRefManager::clear()
 {
-    DocShellMap::iterator itrEnd = maDocShells.end();
-    for (DocShellMap::iterator itr = maDocShells.begin(); itr != itrEnd; ++itr)
-        itr->second.maShell->DoClose();
+    for (auto& rEntry : maDocShells)
+        rEntry.second.maShell->DoClose();
 
     maDocShells.clear();
     maSrcDocTimer.Stop();
@@ -3038,15 +2994,14 @@ bool ScExternalRefManager::hasExternalData() const
 
 void ScExternalRefManager::resetSrcFileData(const OUString& rBaseFileUrl)
 {
-    for (vector<SrcFileData>::iterator itr = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
-          itr != itrEnd; ++itr)
+    for (auto& rSrcFile : maSrcFiles)
     {
         // Re-generate relative file name from the absolute file name.
-        OUString aAbsName = itr->maRealFileName;
+        OUString aAbsName = rSrcFile.maRealFileName;
         if (aAbsName.isEmpty())
-            aAbsName = itr->maFileName;
+            aAbsName = rSrcFile.maFileName;
 
-        itr->maRelativeName = URIHelper::simpleNormalizedMakeRelative(
+        rSrcFile.maRelativeName = URIHelper::simpleNormalizedMakeRelative(
             rBaseFileUrl, aAbsName);
     }
 }
@@ -3054,16 +3009,15 @@ void ScExternalRefManager::resetSrcFileData(const OUString& rBaseFileUrl)
 void ScExternalRefManager::updateAbsAfterLoad()
 {
     OUString aOwn( getOwnDocumentName() );
-    for (vector<SrcFileData>::iterator itr = maSrcFiles.begin(), itrEnd = maSrcFiles.end();
-          itr != itrEnd; ++itr)
+    for (auto& rSrcFile : maSrcFiles)
     {
         // update maFileName to the real file name,
         // to be called when the original name is no longer needed (after CompileXML)
 
-        itr->maybeCreateRealFileName( aOwn );
-        OUString aReal = itr->maRealFileName;
+        rSrcFile.maybeCreateRealFileName( aOwn );
+        OUString aReal = rSrcFile.maRealFileName;
         if (!aReal.isEmpty())
-            itr->maFileName = aReal;
+            rSrcFile.maFileName = aReal;
     }
 }
 
@@ -3109,9 +3063,8 @@ void ScExternalRefManager::removeLinkListener(sal_uInt16 nFileId, LinkListener*
 
 void ScExternalRefManager::removeLinkListener(LinkListener* pListener)
 {
-    LinkListenerMap::iterator itr = maLinkListeners.begin(), itrEnd = maLinkListeners.end();
-    for (; itr != itrEnd; ++itr)
-        itr->second.erase(pListener);
+    for (auto& rEntry : maLinkListeners)
+        rEntry.second.erase(pListener);
 }
 
 void ScExternalRefManager::notifyAllLinkListeners(sal_uInt16 nFileId, LinkUpdateType eType)
@@ -3128,18 +3081,17 @@ void ScExternalRefManager::notifyAllLinkListeners(sal_uInt16 nFileId, LinkUpdate
 void ScExternalRefManager::purgeStaleSrcDocument(sal_Int32 nTimeOut)
 {
     // To avoid potentially freezing Calc, we close one stale document at a time.
-    DocShellMap::iterator itr = maDocShells.begin(), itrEnd = maDocShells.end();
-    for (; itr != itrEnd; ++itr)
-    {
-        // in 100th of a second.
-        sal_Int32 nSinceLastAccess = (tools::Time( tools::Time::SYSTEM ) - itr->second.maLastAccess).GetTime();
-        if (nSinceLastAccess >= nTimeOut)
-        {
-            // Timed out.  Let's close this, and exit the loop.
-            itr->second.maShell->DoClose();
-            maDocShells.erase(itr);
-            break;
-        }
+    DocShellMap::iterator itr = std::find_if(maDocShells.begin(), maDocShells.end(),
+        [nTimeOut](const DocShellMap::value_type& rEntry) {
+            // in 100th of a second.
+            sal_Int32 nSinceLastAccess = (tools::Time( tools::Time::SYSTEM ) - rEntry.second.maLastAccess).GetTime();
+            return nSinceLastAccess >= nTimeOut;
+        });
+    if (itr != maDocShells.end())
+    {
+        // Timed out.  Let's close this.
+        itr->second.maShell->DoClose();
+        maDocShells.erase(itr);
     }
 
     if (maDocShells.empty())
diff --git a/sc/source/ui/docshell/macromgr.cxx b/sc/source/ui/docshell/macromgr.cxx
index bbe31344c73b..108df7be46dc 100644
--- a/sc/source/ui/docshell/macromgr.cxx
+++ b/sc/source/ui/docshell/macromgr.cxx
@@ -60,10 +60,9 @@ public:
 
     void removeCell(const ScFormulaCell* pCell)
     {
-        ModuleCellMap::iterator itr = maCells.begin(), itrEnd = maCells.end();
-        for (; itr != itrEnd; ++itr)
+        for (auto& rEntry : maCells)
         {
-            itr->second.erase(std::remove(itr->second.begin(), itr->second.end(), pCell), itr->second.end() );
+            rEntry.second.erase(std::remove(rEntry.second.begin(), rEntry.second.end(), pCell), rEntry.second.end() );
         }
     }
 
@@ -181,10 +180,8 @@ void ScMacroManager::BroadcastModuleUpdate(const OUString& aModuleName)
 {
     vector<ScFormulaCell*> aCells;
     mpDepTracker->getCellsByModule(aModuleName, aCells);
-    vector<ScFormulaCell*>::iterator itr = aCells.begin(), itrEnd = aCells.end();
-    for (; itr != itrEnd; ++itr)
+    for (ScFormulaCell* pCell : aCells)
     {
-        ScFormulaCell* pCell = *itr;
         mpDoc->PutInFormulaTree(pCell); // for F9 recalc
 
         // for recalc on cell value change.  If the cell is not volatile, the


More information about the Libreoffice-commits mailing list