我想打印出多重集中的每个重复项,但不知何故迭代器对我来说表现得很奇怪。如何修复此代码?这段代码导致了一个永远的循环,这让我感到惊讶。
#include <set>
#include <iostream>
#include <sstream>
static void print_duplicate(const std::multiset<int>& mset)
{
  std::stringstream error_msg;
  for (auto it = mset.begin(); it != mset.end(); ++it)
    {
      unsigned count = mset.count(*it);
      if (count < 2)
        continue;
      error_msg << "Duplicated numbers found:\n";
      for (unsigned i = 0; i < count; ++it, ++i)
        error_msg << "\tNum:" << *it << "\n";
    }
  std::cout << error_msg.str();
}
int main()
{
  std::multiset<int> mset;
  // fill it
  mset.insert(1);
  mset.insert(1);
  mset.insert(1);
  print_duplicate(mset);
}
编辑 我在周期结束时添加了一个 --it
  for (unsigned i = 0; i < count; ++it, ++i)
    error_msg << "\tNum:" << *it << "\n";
  --it; // this line fix it
}