遍历二维向量,不能取消引用?

Posted

技术标签:

【中文标题】遍历二维向量,不能取消引用?【英文标题】:iterate through 2D vector, cant dereference? 【发布时间】:2018-10-06 19:06:30 【问题描述】:

我正在尝试初始化两个迭代器,两个是我的二维向量,一个用于行,一个用于列。我是这样做的:

vector<vector<int> > v;
    vector<vector<int> >::iterator r;
    vector<int>::iterator c;

    r = v.begin();
    c = r->begin();

当我运行代码时,我得到以下弹出窗口: 调试断言失败! 表达式:不能取消引用值初始化向量迭代器。

这句话有一些问题:

c = r->begin();

但不明白为什么?

谢谢

【问题讨论】:

【参考方案1】:

v 为空,因此r 没有指向有效的vector&lt;int&gt; 实例(没有实例可以指向)。您实际上是在取消引用 v.end(),因此您的程序表现出未定义的行为。

【讨论】:

以上是关于遍历二维向量,不能取消引用?的主要内容,如果未能解决你的问题,请参考以下文章

是否使用指针或引用来访问向量,然后遍历它缓存不友好?

C++ 数组(及二维数组)与指针(互转遍历),数组与引用

如何遍历向量并知道元素的索引?

使用浮点数遍历二维数组时出错

将字符串列表插入二维向量

在 C++ 中重塑二维向量