Hello, I'm taking a look to the use of erase on iterators. I found this example: 289 void OHierarchyElement_Impl::RemoveElement( const ::rtl::Reference< OHierarchyElement_Impl >& aRef ) 290 { 291 { 292 ::osl::MutexGuard aGuard( m_aMutex ); 293 OHierarchyElementList_Impl::iterator aIter = m_aChildren.begin(); 294 const OHierarchyElementList_Impl::const_iterator aEnd = m_aChildren.end(); 295 while (aIter != aEnd) 296 { 297 if (aIter->second == aRef ) 298 aIter = m_aChildren.erase(aIter); 299 else 300 ++aIter; 301 } 302 } See http://opengrok.libreoffice.org/xref/core/package/source/xstor/ohierarchyholder.cxx#298
Is it ok to use "aEnd" or, since erase may be called, we should change the while into: while (aIter != m_aChildren.end()) (and remove aEnd) Another thing: couldn't we break the loop after erase or could aRef be present several times? Julien -- View this message in context: http://nabble.documentfoundation.org/About-erasing-iterators-ohierarchyholder-cxx-package-module-tp4071746.html Sent from the Dev mailing list archive at Nabble.com. _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice