注册 登录
编程论坛 C++教室

把数组引用传参,sort不可以使用,请问哪里出错了呀

叶纤 发布于 2020-03-30 16:04, 2062 次点击
程序代码:

#include <iostream>
#include<array>
#include<algorithm>
using namespace std;
void num(const array<int,5>&myarray)
{
    cout<<size(myarray);
   sort(myarray.begin(), myarray.end());//这里出错
    for(int i:myarray)
     {
        cout<<i;}
}
int main()
{
    array<int,5>myarray;
    myarray={1,2,33,5,77};
   num(myarray);
}

5 回复
#2
rjsp2020-03-30 16:07
void num(const array<int,5>&myarray)
常量是不允许修改的,而 sort(myarray.begin(), myarray.end()) 却要求修改它。
#3
叶纤2020-03-30 16:13
谢谢啦,按照您的意思去掉了就可以了
#4
叶纤2020-03-30 16:16
程序代码:
#include <iostream>
#include<array>
#include<algorithm>
using namespace std;
void num( array &myarray)
{
    cout<<size(myarray);
   sort(myarray.begin(), myarray.end());
    for(int i:myarray)
     {
        cout<<i;}
}
int main()
{
    array  myarray{1,2,33,5,77};

   num(myarray);
}
可是变成++17的格式就传参就不可以了
#5
rjsp2020-03-30 16:48
回复 4楼 叶纤
array myarray{1,2,33,5,77};
这个可以自动推导出 myarray 是 array<int,5> 类型


void num( array& myarray)
肯定不行呀,它怎么知道一定只有 array<int,5> 会传给它。
除非你把它写成模板形式
#6
叶纤2020-03-30 17:14
了解了解,我以为array是个聚合类型的数据,直接引用就可以偷偷的看见array变量的每一个成员呢
1