set最主要的功能就是自动去重和升序排序
除开vector和string之外都不自持*(it + i)的访问方式
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> st;
st.insert(3);
st.insert(5);
st.insert(2);
st.insert(3);
// 不支持 it < st.end()的写法, 因为地址比较不了大小?(不确定,可能是这个原因)
for(set<int>::iterator it = st.begin(); it != st.end(); it++)
{
cout << *it << ' ' ;
}
return 0;
} ;
关于迭代器大小比较不支持的原因,更大的可能性是有歧义,因为set和map这类容器的地址是不连续的,所以迭代器指向的空间也不连续,可能会使在set中靠后的元素地址在靠前的元素前面,则迭代器的比较是比较地址还是比较相对位置就不从得知,而且无法保证比较的两个迭代器指向同一个set中的元素,容易出错,相反不等于的操作就更加简单易操作,只要看他们指向的元素是否相同(不只是相等)。
噢噢,谢谢!