C++ 在2D向量中的预定位置更改多个值的最简单方法是什么?

C++ 在2D向量中的预定位置更改多个值的最简单方法是什么?,c++,for-loop,vector,points,2d-vector,C++,For Loop,Vector,Points,2d Vector,我有一个二维的字符向量,我称之为网格。就说是70 x 30吧。创建网格时,它会自动用“x”填充每个位置 我有一个显示网格的函数。所以我调用这个函数,控制台会显示一个70x30的x网格 我还想调用另一个函数,用不同的字符替换网格x,y坐标处的字符。这些点并不完全是随机的/分散的。我基本上是从网格边缘的一个点开始,画出锯齿线到另一个边缘。所有点都是预先确定的。要绘制的点很多,因此手动绘制似乎效率低下 我是这样想的: 创建一个双循环,宽度和高度,称为i和j 如果i=(a | | b | | | |

我有一个二维的字符向量,我称之为网格。就说是70 x 30吧。创建网格时,它会自动用“x”填充每个位置

我有一个显示网格的函数。所以我调用这个函数,控制台会显示一个70x30的x网格

我还想调用另一个函数,用不同的字符替换网格x,y坐标处的字符。这些点并不完全是随机的/分散的。我基本上是从网格边缘的一个点开始,画出锯齿线到另一个边缘。所有点都是预先确定的。要绘制的点很多,因此手动绘制似乎效率低下

我是这样想的:

  • 创建一个双循环,宽度和高度,称为i和j
  • 如果i=(a | | b | | | | | | | c | | | d..和&j=(e | | f | | g..)
基本上,对于每一个可能的场景,都要完成这个繁琐的过程。。
当然有一个更简单更简单的方法lol。任何建议都将不胜感激。谢谢

如果可以通过地图预先确定点(如标高编辑器或其他固定模式),则制作一个x/y坐标字典,以确定瓷砖的形状。迭代字典并进行每次替换

如果点不是预先确定的,而是遵循一种模式,例如线或斑点,那么编写一个方法来绘制线/blob/任何东西,并反复调用它。该方法决定要替换哪些磁贴并替换那些磁贴

顺便说一句,这样做2D检查和处理时有一个技巧,叫做“增量”,例如xdelta=-1,ydelta=0是西部,xdelta=1,ydelta=1是东北部。通过使用delta,您可以使用不同的delta运行函数两次、四次或八次,只需使用delta的方向,而无需单独尝试所有八个方向,它就可以向不同的方向移动-如果需要,还可以使用delta来驱动边界检查,例如,你不能在你没有前进的方向上越界。然后,您可以更进一步,对所有方向进行枚举,函数反转方向,将方向旋转90/45度(如果枚举了,则非常简单,只需向枚举中添加2或1,然后返回新方向),等等,使处理变得非常简单

所以我可能会有

函数绘制线(int-xstart、int-ystart、int-xdelta、int-ydelta)


从xstart开始,ystart,用O替换平铺,将xdelta添加到x,将ydelta添加到y,用O替换平铺,等等,直到它从边缘脱落。

您始终可以使用一维数组并对其进行二维索引。看起来您在网格上有一个坐标列表要替换。为什么不浏览一下列表,只为需要替换的单元格编制索引?