所以我需要从最接近该列平均数的列更改元素(整数)。 例如:
我们有这个二维数组array[3][3]
1 4 7
2 5 8
3 6 9
所以从第一列开始,我需要更改/替换 2 ((1+2+3)/3=2) 因为它最接近列的平均值
对于第二列,我需要更改/替换 5 ((4+5+6)/3=5)
对于第三个 8
所以在最终版本中我会得到
1 4 7
3 6 9
我只是通过缩短数组的长度并按每个 1 个插槽的数字来“删除”元素,这是我如何为一维数组做的
int search(char A[], int B[], int n, char tp, int dd) //Search for number
{
int ind = -1;
for (int i = 0; i < n; i++)
if ((A[i] == tp) && (B[i] == dd))
ind = i;
return ind;
}
void remove(char A[], int B[], int & n, int ind) //remove number from array
{
for (int i = ind; i < n - 1; i++)
{
A[i] = A[i + 1];
B[i] = B[i + 1];
}
n--;
我知道如何删除简单的一维数组中的元素,但无法真正想出实现从二维数组中删除元素的方法
任何帮助将不胜感激
最佳答案
目标是在每一列中删除一个元素。
因此,元素的数量在每一列中保持不变,而不是在每一行中。
一种解决方案是使用 vector 的 vector ,并用它来表示矩阵的转置。在矩阵 M
中,对于每个 M[i][j]
元素,纯粹的约定是 i
代表一行,j
一列。取反相当于颠倒这个约定。
因此,您只需删除代表一列的每个 vector M[i]
中的一个元素。
如果迫不得已,很容易将这种方法用于经典的 C 风格数组。
PS:上述约定并不通用。例如,对于信道编码,专家们使用线 vector 。然后使用的矩阵是它们应该是经典原始 vector 约定的转置。
关于c++ - 如何从二维数组列中更改单个元素(整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53364458/