向量下标超出向量向量的范围
Vector subscript out of range from a vector of vectors
也许已经很晚了,但是我没有看到为什么我会在此代码的范围内获得vector subscript:
int m = 3;
int n = 2;
std::vector<std::vector<int>> path(m, std::vector<int>(n, 0));
for (int i = 0; i < path.size(); ++i)
path[0][i] = 1;
for (int i = 0; i < path[0].size(); ++i)
path[i][0] = 1;
谁能告诉我这里有什么问题?
您无法正确使用这些索引。
for (int i = 0; i < path.size(); ++i)
path[0][i] = 1;
需要
for (int i = 0; i < path.size(); ++i)
path[i][0] = 1; // Swap i and 0
和
for (int i = 0; i < path[0].size(); ++i)
path[i][0] = 1;
需要
for (int i = 0; i < path[0].size(); ++i)
path[0][i] = 1; // Swap i and 0
如果您完善了这样的代码,则问题很清楚。
int m = 3;
int n = 2;
std::vector<std::vector<int>> path(m, std::vector<int>(n, 0));
for (auto& subVec : path) {
subVec[0] = 1;
}
std::vector<int>& firstVec = path[0];
for (auto& item : firstVec) {
item = 1;
}
尝试此更改,我扭转了您的循环条件。
int m = 3;
int n = 2;
std::vector<std::vector<int>> path(m, std::vector<int>(n, 0));
for (int i = 0; i < path[0].size(); ++i)
path[0][i] = 1;
for (int i = 0; i < path.size(); ++i)
path[i][0] = 1;
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++ - 使用基于范围的 for 循环将字符值分配给向量中的字符串不会分配值
- 布尔值向量的基于范围 for 循环
- 如何使用count_if计算向量中的可变数字范围
- 范围 v3 的和向量
- 关于在向量向量上使用基于范围的 for 循环
- 使用基于范围的指针循环和向量时出现C++错误
- 用基于范围的for循环填充指针向量
- 创建结构体向量,表达式:向量下标超出范围
- 代码超出范围.如何动态分配此向量?
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- 非常量对象的向量似乎在基于范围的 for 循环中被视为常量
- 从给定范围内的向量中查找最大元素
- 向量向量的范围范围
- 将局部变量保存到全局向量中,为什么离开局部范围后可以得到这些局部变量?
- 指针范围问题和返回类中封装的指针向量内的指针引用
- 在 c++ 中检查 if 条件中的向量位置范围
- 向量下标超出向量向量的范围
- 如何正确使用向量范围构造函数