【发布时间】:2019-08-02 01:33:38
【问题描述】:
在使用冒泡排序对其进行排序后,我正在尝试将 2D 数组重置为其原始形式。我需要将其重置为排序前的状态。我该怎么做?如果您有一个问题,为什么数组是全局的。这是一项学校作业,这就是我们的教授希望我们这样做的方式。 这是我的程序:
#include<iostream>
using namespace std;
const int NUM_COLS=4;
const int NUM_ROWS=5;
int array[NUM_ROWS][NUM_COLS]={{5, 3, 2, 16},
{9, 8, 10, 17},
{4, 7, 11, 18},
{2, 5, 9, 12},
{7, 9, 4, 10}};
它使用bubbleSort对数组进行排序
void bubbleSort(int row, int col){}
是显示数组函数头
void displayArray(){}
这里是主要功能
int main(){
cout<<"original array"<<endl;
displayArray();
bubbleSort(NUM_ROWS-1, NUM_COLS);
cout<<"\nbubble sort"<<endl;
displayArray();
reset();
displayArray();
return 0;
}
现在我需要将数组重置为原始数组。我这样做了,但它不起作用。
void reset(){
int array[NUM_ROWS][NUM_COLS]={{5, 3, 2, 16},
{9, 8, 10, 17},
{4, 7, 11, 18},
{2, 5, 9, 12},
{7, 9, 4, 10}};
}
【问题讨论】:
-
这是不可能的,元素的初始顺序不会保留在任何地方。您必须创建数组的副本。
-
你能详细说明一下吗?我一直在互联网上寻找答案,我找到了诸如“创建副本”之类的答案,但是当我尝试这样做时却没有用。
-
排序前先复制一份。或者,对
std::reference_wrapper的新容器进行排序,以获得原始容器的排序视图。 -
您正在
reset()中创建一个新数组,但无论如何您都不能分配给普通数组。考虑使用std::array,这样你就可以重新分配=。
标签: c++ arrays reset dimensional