gpt4 book ai didi

java - 如何检查 vector vector 中的位置是否超出范围?

转载 作者:行者123 更新时间:2023-12-02 10:36:44 24 4
gpt4 key购买 nike

我有一个 vector vector ,其中填充了文本文件中的字符。它本质上是一个简单的爆发模拟器,“i”字符被感染,“s”字符容易受到感染。重点是遍历矩阵,如果遇到“i”,则会将其周围的所有“s”更改为“i”。由于检查矩阵边缘边界之外的位置,我在检查周围的元素时遇到了问题。有没有办法在我的 if 语句中检查这些界限?

代码如下:

for (int i = 0; i < population.size(); i++) {  
for(int j = 0; j < population[i].size(); j++) {

if(population[i][j] == 'i') {

if(population[i-1][j] == 's') {
population[i-1][j] = 'i';
}
if(population[i-1][j+1] == 's') {
population[i-1][j+1] = 'i';
}
if(population[i][j+1] == 's') {
population[i][j+1] = 'i';
}
if(population[i+1][j+1] == 's') {
population[i+1][j+1] = 'i';
}
if(population[i+1][j] == 's') {
population[i+1][j] = 'i';
}
if(population[i+1][j-1] == 's') {
population[i+1][j-1] = 'i';
}
if(population[i][j-1] == 's') {
population[i][j-1] = 'i';
}
}
}
}

最佳答案

您可以执行如下操作,而不是直接引用特定的数组条目:

void checkForInfectionAndInfectIfNeeded(int i, int j) {
for (int row = -1; row <= 1; row++) {
for (int column = -1; column <=1; column++) {
infect(i + row, j + column);
}
}
}

void infect(int i, int j) {
if (i < 0 || i >= population.size() || j < 0 || j >= population[j].size()) {
return;
} else {
population[i][j] = 'i';
}
}

这样,infect 方法是唯一检查边界的方法,并且您可以用两个循环替换一长串手动检查周围位置的列表。

关于java - 如何检查 vector vector 中的位置是否超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53235818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com