c++ - 如何从二维数组列中更改单个元素(整数)

标签 c++ arrays multidimensional-array

所以我需要从最接近该列平均数的列更改元素(整数)。 例如:

我们有这个二维数组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/

相关文章:

c++ - 具有不同保护级别的访问器

java - 爱好游戏编程,我应该用Java还是C++

c++ - 自上而下的动态编程 VS 递归朴素解决方案。检查运行时执行

python - 如何在 z3 的 Python API 中实现位向量数组

c++ - 在 C++ 中初始化 GLfloats 的多维数组

python - 如何将 3D 数组转换为 python 中的 2D 数组列表?

php - 数组键存在于多维数组中

JavaScript 二维数组

C++检查数据是否相等

python - 无法解决总和为 k 的连续子数组中的边缘情况