搜尋

首頁  >  問答  >  主體

C++能不能输出迭代器保存的地址?

比如有如下代码:

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

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

黄舟黄舟2803 天前559

全部回覆(2)我來回復

  • 天蓬老师

    天蓬老师2017-04-17 14:30:57

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

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

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

    回覆
    0
  • 黄舟

    黄舟2017-04-17 14:30:57

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

    回覆
    0
  • 取消回覆