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

比如有如下代码:

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

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

黄舟
黄舟

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

全員に返信(2)
Peter_Zhu

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

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

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

いいねを押す +0
黄舟

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート