検索

ホームページ  >  に質問  >  本文

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

比如有如下代码:

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

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

黄舟黄舟2803日前562

全員に返信(2)返信します

  • 天蓬老师

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

    一般に、イテレータは実際のデータ アドレスを内部メンバー変数に格納し、さまざまな演算子 (逆参照演算子 * など) をオーバーロードするデータ構造です。データ アドレスを取得するには、推奨される方法は &* です。つまり、最初にアスタリスク演算子 を介して実際のデータを取得し、 によってオーバーロードされる可能性があります。その後、アドレスを取得します。

    しかし、vector<int> の場合、実際には typedef int *iterator なので、(int*)tmp でも問題ありません。

    Hou Jie が翻訳した「STL Source Code Analysis」を参照できます

    返事
    0
  • 黄舟

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

    &*tmp、またはstd :: addressof(*tmp)

    返事
    0
  • キャンセル返事