如何用cout<<打印iterator“本身”如 a.begin(),而并不是解引用的 *a.begin()?

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int>a(10,1);
    cout  << a.begin();
    return 0;
}
阅读 3.6k
2 个回答

解引用迭代器的值用*运算符.

cout << *a.begin();

或者使用front()成员函数.

cout << a.front();

建议看下cout类的operaotr<<()方法。我没看过代码,但显然应该是模板方法。模板参数为迭代器类型时,打印的就是迭代器指向内容。
如果要直接打印迭代器,那么问题是迭代器是个对象,你怎么打印呢?我猜你的意思大概是打印出来类似指针的东西,但是很遗憾,迭代器没法变成指针。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题