[英]Vector subscript out of range from a vector of vectors
也许已经晚了,但是我不明白为什么我的矢量下标超出了范围:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.