比如有如下代码:
vector<int>::iterator tmp = find(box.begin(), box.end(), 0);
我想知道tmp保存的地址是多少,应该怎么做呢?
天蓬老师2017-04-17 14:30:57
一般來說,迭代器是個資料結構,會將真實的資料位址保存在某個內部的成員變數中,並重載各種運算子(例如解引用運算子*
)。要取得資料位址,建議的方法是&*
,也就是先透過可能被重載過的星號運算子得到真實資料再取位址。
但對於vector<int>
,其實是typedef int *iterator
,所以即使(int*)tmp
也沒啥問題。
可以參考侯捷翻譯的《STL源碼剖析》