You can use iterators for a STL set object to loop through the set elements 1 by 1. But did you know you can also increment the iterator by more than 1? Here’s an example:
const int GetNextProduct(const unsigned int uiIndex){ ProductSet::const_iterator itElement, it = m_ProductSet.begin(); unsigned int ui = 0; while ((++ui - 1) <= uiIndex) { itElement = m_ProductSet.find(*it); if (itElement == m_ProductSet.end()) { TraceW("No more products found, found [%u] products in total", ui - 1); return -1; } ++it; // Can I also do it += 2??? } return *itElement;}