起因:我在遍历set容器时发生的错误 for (set<int>::iterator i = s.begin(); i < s.end(); ++i) { printf("%d ", *i); } 注意到后面i < s.end(),我之前的容器中我并无发生错误,这是因为我之前使用的容器都支持 < 这个比较操作符,而set不支持。 Q:那为什么set不支持呢? A:我猜是因为set存储的地址空间不是连续的 结论:下次遍历都用!=来进行比较。