C+中的快速排序+;array.size()错误 我在C++中编写了一些代码,用来对整数数组进行排序。我在这里有完整的代码: void swap(int A[], int x, int y) { int tmp; tmp=A[x]; A[x]=A[y]; A[y]=tmp; } int partition(int A[], int start, int stop) { int big=start; int pivot=A[stop]; for(int i=start; i<stop; i++) { if(A[i]<=pivot) { swap(A, i, big); big++; } } swap(A, big, stop); return big; } void quick_Sort_Helper(int A[], int start, int stop) { //base cases if(stop<=start) {return;} if(start+1==stop) { if(A[start]>A[stop]) {swap(A, start, stop);} return; } //recursive cases int pivot=partition(A,start, stop); quick_Sort_Helper(A,start, pivot-1); quick_Sort_Helper(A, pivot, stop); } void quick_Sort(int A[]) { quick_Sort_Helper(A,0, A.size()-1); } void swap(int A[],int x,int y) { int tmp; tmp=A[x]; A[x]=A[y]; A[y]=tmp; } 整数分区(整数A[],整数开始,整数停止) { int大=开始; int pivot=A[停止]; for(int i=start;i

C+中的快速排序+;array.size()错误 我在C++中编写了一些代码,用来对整数数组进行排序。我在这里有完整的代码: void swap(int A[], int x, int y) { int tmp; tmp=A[x]; A[x]=A[y]; A[y]=tmp; } int partition(int A[], int start, int stop) { int big=start; int pivot=A[stop]; for(int i=start; i<stop; i++) { if(A[i]<=pivot) { swap(A, i, big); big++; } } swap(A, big, stop); return big; } void quick_Sort_Helper(int A[], int start, int stop) { //base cases if(stop<=start) {return;} if(start+1==stop) { if(A[start]>A[stop]) {swap(A, start, stop);} return; } //recursive cases int pivot=partition(A,start, stop); quick_Sort_Helper(A,start, pivot-1); quick_Sort_Helper(A, pivot, stop); } void quick_Sort(int A[]) { quick_Sort_Helper(A,0, A.size()-1); } void swap(int A[],int x,int y) { int tmp; tmp=A[x]; A[x]=A[y]; A[y]=tmp; } 整数分区(整数A[],整数开始,整数停止) { int大=开始; int pivot=A[停止]; for(int i=start;i,c++,arrays,quicksort,C++,Arrays,Quicksort,数组没有方法。因此此表达式A.size()-1无效。必须将数组中的元素数显式传递给函数。因此函数声明如下所示 void quick_Sort( int A[], size_t n ); < C++ >代码> >代码> > < >代码> > < />代码> .< /p> 数组,与java不同,不是Java类。如果你想使用数组作为类,可以使用数组类。 array<int,5> A; C++中,一个数组不具有任何功能,它只是一个相邻的内存块,它足以容纳它所声明的任何数据(在你的情况下

数组没有方法。因此此表达式
A.size()-1
无效。必须将数组中的元素数显式传递给函数。因此函数声明如下所示

void quick_Sort( int A[], size_t n );

< C++ >代码> >代码> > < >代码> > < />代码> .< /p> 数组,与java不同,不是Java类。如果你想使用数组作为类,可以使用数组类。

array<int,5> A;

C++中,一个数组不具有任何功能,它只是一个相邻的内存块,它足以容纳它所声明的任何数据(在你的情况下,它是sieof(int)*编号项)。 我建议改为使用std::vector(在您的例子中,这将是std::vector),它在幕后管理数组,但提供size()函数、迭代器、随机访问、自动调整大小等细节


或者,如果要像这样直接使用数组,则需要将其长度传递给要在数组上操作的任何函数。否则,该函数绝对无法知道数组的大小。

原始数组非常愚蠢。它们是一块没有任何支持方法的内存块。此外,当您让他们周围的人,他们往往失去他们所拥有的小的元信息。如果你需要保存这些信息,考虑使用或。

如果这些原因不可用,请考虑编写一个简单的包结构来包含数组的大小信息并传递结构。< / P>不,数组没有<代码>()/>代码>函数。它们从来没有。永远不会。这是C++,不是java。我不理解,因为siz()数组的函数应该返回数组中元素长度/数量的整数。不确定从哪里得到的……我不明白为什么所有的否决票对我来说都是一个合理的问题,有足够的细节,可能不是在Google上搜索的最简单的东西。“数组大小C++”出现在Google、Bing、Yahoo和DuckDuckGo的第一页顶部附近。@Jonathan“数组大小C++”之所以选择OP,是因为OP在试图在C++中获得数组大小的代码中遇到了麻烦。当您不知道要搜索的单词时,我就在这里与您讨论Web搜索的无用性,但在这种情况下,将错误信息粘贴到谷歌中会弹出以下问题:这是一个几乎相同的DUPE。

int l = sizeof(A)/sizeof(A[0]);