一般来说,迭代器是个数据结构,会将真实的数据地址保存在某个内部的成员变量中,并重载各种运算符(比如解引用运算符*)。要取得数据地址,推荐的方法是&*,即先通过可能被重载过的星号运算符得到真实数据再取地址。 但是对于vector<int>,其实是typedef int *iterator,所以即使(int*)tmp也没啥问题。 可以参考侯捷翻译...
这个输出,不是地址。因为你在set中,存的是对象,it.next()获取的就是这个对象,利用System.out.print打印对象当然打印不出来了,你可以打印Student的方法获取的值,比如 getName()等,就可以了。