C++ 不断出现分割错误:11,我不确定为什么?
我需要创建一个程序,从矩阵中的命令行中查找单词,然后将它们涂成红色。这是从左到右阅读单词的第一部分。我一直收到一个分段错误:来自int main中第二个嵌套for循环的11。我知道我不把函数称为“正确”,但这不应该影响分段错误,是吗?非常感谢您的帮助,非常感谢C++ 不断出现分割错误:11,我不确定为什么?,c++,C++,我需要创建一个程序,从矩阵中的命令行中查找单词,然后将它们涂成红色。这是从左到右阅读单词的第一部分。我一直收到一个分段错误:来自int main中第二个嵌套for循环的11。我知道我不把函数称为“正确”,但这不应该影响分段错误,是吗?非常感谢您的帮助,非常感谢 #include "colormod.h" #include <iostream> #include <vector> #include <string> using namespace std; i
#include "colormod.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main(int argc, char *argv[]){
Color::Setting red(Color::FG_RED);
Color::Setting def(Color::FG_DEFAULT);
for(int i = 0; i < argc; i++){
argv[i];
}
int x, y;
cin >> x >> y;
vector < vector < char > > matrix;
matrix.resize(x);
for(int i = 0; i < matrix.size(); i++){
matrix[i].resize(y);
for(int k = 0; k < matrix.size(); k++){
cin >> matrix[i][k];
}
}
//THIS IS WHERE THE SEGMENTATION FAULT IS
vector < vector < bool > > empty;
for(int i = 0; i < matrix.size(); i++){
for(int k = 0; k < matrix.size(); k++){
if(empty[i][k] == true){
cout << red << matrix[i][k] << def << " ";
}
else{
cout << matrix[i][k] << " ";
}
}
cout << endl;
}
}
//THIS IS WHERE THE SEGMENTATION FAULT ENDS
void right(vector < vector < char > > &matrix, vector < vector < bool > > &empty, char *word, int x, int y){
bool check = false;
int count = 0;
int wordLength = strlen(word);
for(int i = 0; i < wordLength; i++){
if(y < matrix.size()){
if(word[i] == matrix[x][y]){
count++;
}
}
y++;
}
if(count == wordLength) check = true;
if(check){
y = y - wordLength;
for(int i = 0; i < wordLength; i++){
if(y < matrix.size()){
if(word[i] == matrix[x][y]){
empty[x][y] = true;
}
}
y++;
}
}
}
#包括“colormod.h”
#包括
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[]){
颜色:设置红色(颜色:FG_红色);
颜色::设置def(颜色::FG_默认值);
对于(int i=0;i>x>>y;
向量>矩阵;
矩阵。调整大小(x);
对于(int i=0;i>矩阵[i][k];
}
}
//这就是分段错误所在
向量>为空;
对于(int i=0;i
对于for循环中的嵌套循环,您也使用了错误的大小。对于内部向量的大小,您使用的外部向量大小可能是正确的,也可能是不正确的。for循环应该如下所示
for(int i = 0; i < matrix.size(); i++)
for(int k = 0; k < matrix[i].size(); k++)
您的矩阵不一定是正方形的,因为x
和y
可以不同,但您只需使用x
(matrix.size()
)循环遍历行和列,因此您将尝试访问一些不存在的内容。我从另一个用户那里看到了几乎相同的代码,并且非常确定他们有相同的问题。@Crashstr,有人与整个类共享了分配代码。)相关:
if(empty[i][k] == true)
for(int i = 0; i < matrix.size(); i++)
for(int k = 0; k < matrix[i].size(); k++)
for (auto& row : matrix)
{
//now row is one row of the outer vector
for (auto& col : row)
{
// now col is one element in the row
}
}