在 C++ 中排序后如何调用数组中的变量?

Posted

技术标签:

【中文标题】在 C++ 中排序后如何调用数组中的变量?【英文标题】:How do you call a variable in an array after sorting it in C++? 【发布时间】:2017-05-12 04:44:06 【问题描述】:

我要做的是通过函数对数组中的变量进行排序(升序)。

我的功能是:

void xpPoints_Sorting ()

  int xpPoints[] =  620, 500, 250, 1000, 830, 100, 370 ;
  int temp;

  for(int i=1;i< 7;++i)
    
        for(int j=0;j<(7-i);++j)
            if(xpPoints[j] > xpPoints[j+1])
            
                temp = xp[j];
                xpPoints[j] = xpPoints[j+1];
                xpPoints[j+1] = temp;
            
    

问题是当我在 int main() 中键入 xpPoints[0] 时,输出仍然是“620”而不是“100”。

  int main()
  
  xpPoints_Sorting ();
  int xpPoints[] =  620, 500, 250, 1000, 830, 100, 370 ;
  cout <<  xpPoints[0];
  

但是,当我没有将它放入函数并将其放入 int main() 时,它工作得非常好并输出“100”。

如何在保持数组排序功能的同时让它工作?

【问题讨论】:

xpPoints 对 main 来说是本地的,不是吗?你在哪里将数组传递给函数? 是什么让您认为它是mainxpPoints_Sorting 中的同一个数组? 【参考方案1】:

在 idomatic C++ 中,您可以使用 std::sort 算法来实现您想要做的事情:

  #include <algorithm>

  int main()
  
     int xpPoints[] =  620, 500, 250, 1000, 830, 100, 370 ;
     std::sort(xpPoints,xpPoints + 7);
     cout << xpPoints[0];
  

【讨论】:

我不确定我的老师是否允许我使用它,但谢谢!【参考方案2】:

您似乎对作用域在 C++ 中的工作方式感到困惑。您在 main() 中定义了一个名为 xpPoints 的数组,但它是该函数的本地。简单地调用一个对另一个数组进行排序的函数对您的本地 xpPoints 数组没有影响。因此,当您打印第一个元素时,什么都没有改变。

要解决这个问题,您可以重构 xpPoints_Sorting(),使其将数组作为输入,然后对其进行排序,例如:

void xpPoints_Sorting (int xpPoints[], int length)

    int temp;

    for (int i=1; i < length; ++i)
    
        for (int j=0; j < (length-i); ++j)
            if (xpPoints[j] > xpPoints[j+1])
            
                temp = xp[j];
                xpPoints[j] = xpPoints[j+1];
                xpPoints[j+1] = temp;
            
        
    

然后在你的main() 函数中:

int main()

    int xpPoints[] =  620, 500, 250, 1000, 830, 100, 370 ;
    xpPoints_Sorting(xpPoints, 7);
    cout << xpPoints[0];

【讨论】:

我尝试过这样做,但出现错误并显示“'int xpPoints []' 的声明会影响参数” @Confused.Student 从排序函数 q.v 中删除不必要的 xpPoints 数组声明。我上面的更新代码。 哦,我明白了。非常感谢你!我现在明白了。 我认为重要的是要注意,将数组的长度也传递给函数是(至少)有用的,而不是硬编码它。 @slawekwin 好主意。

以上是关于在 C++ 中排序后如何调用数组中的变量?的主要内容,如果未能解决你的问题,请参考以下文章

在数组 c++ 上调用排序函数

JavaScript数字数组怎么按数字大小排序?

如何将变量参数传递给 C++ 中的 DBUS 方法调用?

在C++中如何读取文本中的数据存储为数组变量?

在 python swig 中读取 c++ 2d 数组

函数调用或构造函数调用中的 C++ 数组初始化