独立交换列元素(2D数组)C++

独立交换列元素(2D数组)C++,c++,visual-c++,multidimensional-array,C++,Visual C++,Multidimensional Array,我需要单独交换多维数组2D数组列的元素,以便在endback示例中最接近该列平均值的数字: 1 5 8 4 8 7 8 6 2 第一列的平均值是4.3so~4,这意味着我需要4在第三行 第二列的平均值是6.3,所以~6意味着第三行需要6 第三列的平均值是5.6所以~6,这意味着我需要7在第三行,因为它是最接近~6的数字 预期结果 1 5 8 8 8 2 4 6 7 我想了一会儿怎么做,但没有成功。我设法计算出每一列的平均值,就这样 所以我需要帮助交换列中的元素 如果您

我需要单独交换多维数组2D数组列的元素,以便在endback示例中最接近该列平均值的数字:

1 5 8 
4 8 7 
8 6 2 
第一列的平均值是4.3so~4,这意味着我需要4在第三行 第二列的平均值是6.3,所以~6意味着第三行需要6 第三列的平均值是5.6所以~6,这意味着我需要7在第三行,因为它是最接近~6的数字

预期结果

  1 5 8 
  8 8 2 
  4 6 7 
我想了一会儿怎么做,但没有成功。我设法计算出每一列的平均值,就这样

所以我需要帮助交换列中的元素

如果您需要任何额外的信息,请尽管问

更多例子

Input              Input
1 2 3              4 8 9
4 5 6              3 1 7               
7 8 9              7 3 2

Output             Output
1 2 3              7 8 9
7 8 9              3 1 2
4 5 6              4 3 7
第1列平均值=4第1列平均值=~4

第二列平均值=5第二列平均值=4

第三列平均值=6第三列平均值=~7


交换数,使接近列平均的数在后面,排序也可以做这项工作,因为我不关心位置,只要最接近列平均的那个数在后面

,因为你已经知道平均数,所以位置和你使用C++,可以使用std::swap交换阵列上的任意两个元素:

std::swap(array[e1], array[e2]);
内部std::swap实现类似于:

template <class T> void swap ( T& a, T& b )
{
  T c(a); a=b; b=c;
}

您的描述似乎缺少一些用例示例。你只是在交换数字,而不是进行排序。当你说我需要它在第三排时,你的意思是它会用那里的号码交换位置吗?似乎你的要求需要一点澄清,这样才能详细说明算法。要解释你在问题中试图表达的内容是非常困难的…@zertyz我使用排序,因为我不关心其他元素的位置,除了接近列的平均值,但交换也可以做到这一点work@Rusk我需要:计算每一列的平均值,将最后一列的数字替换为最接近我需要做但不知道的列平均值的数字how@Dj_Bear是的,它只是交换两个模板捕获的元素,所以交换任何两个元素都不会有问题。。。