C++能不能输出迭代器保存的地址?
黄舟
黄舟 2017-04-17 14:28:57
0
2
555

比如有如下代码:

vector<int>::iterator tmp = find(box.begin(), box.end(), 0);

我想知道tmp保存的地址是多少,应该怎么做呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(2)
Peter_Zhu

一般來說,迭代器是個資料結構,會將真實的資料位址保存在某個內部的成員變數中,並重載各種運算子(例如解引用運算子*)。要取得資料位址,建議的方法是&*,也就是先透過可能被重載過的星號運算子得到真實資料再取位址。

但對於vector<int>,其實是typedef int *iterator,所以即使(int*)tmp也沒啥問題。

可以參考侯捷翻譯的《STL源碼剖析》

黄舟

&*tmp即可,或std::addressof(*tmp)

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板