将对数组的引用传递给返回对数组的引用的函数
passing a reference to an array TO a function THAT returns a reference to an array
我基本上试过这个:
#include <iostream>
int(&sort(int(&array)[]))[];
double(&sort(double(&array)[]))[];
char(&sort(char(&array)[]))[];
int main(){
int array[]{23, 44, 53, 65, 87, 1, 2, 0, 9};
sort(array);
}
int(&sort(int(&array)[]))[]{
std::cout<<"Function is entered, just for test"<<std::endl;
}
但是,编译器抱怨,它抱怨的第一件事是数组没有绑定,但是,这不是一个一维数组吗?所以,我认为这是可能的,它抱怨的下一件事是,对sort(array)的调用与任何重载函数都不匹配,所以我认为我的语法不正确。那么,如何声明一个接受对数组的引用的函数,该函数返回对数组的引用?
您必须提及模板参数(或使用 auto)。未知边界数组不能是函数参数(指针调整情况除外)。
template<typename T, size_t N>
auto sort( T(&x)[N] ) -> T(&)[N]
{
return x;
}
请注意,像"sort"这样的算法接收迭代器对(或视图)是更正常的样式;这样调用者可以很容易地决定对数组的子集进行排序。
这里有一种方法:
#include <iostream>
auto sort(int(&array)[10])->int(&)[10];
int main(void){
int array[10]{2, 34, 1, 7, 0, 12, 11, 15, 22, 8};
sort(array);
for(auto x: array){
std::cout<<"The number is: "<<x<<std::endl;
}
}
auto sort(int(&array)[10])->int(&)[10]{
for(int i{0}; i< 10; i++){
for(int j{0}; j < 10; j++){
if(array[j]> array[i]){
int temp{array[i]};
array[i] = array[j];
array[j] = temp;
}
}
}
}
相关文章:
- 通过指针与数组引用扩展数组索引序列
- 将链表的内容放在数组引用中
- 是否允许使用初始值设定项列表将const数组引用实例化为构造函数参数
- C 在将数组引用分配给struct时麻烦
- Typedef数组引用
- 通过强制转换创建子数组引用
- 将数组引用 'T(&)[n]' 引用到 'std::array<T, n>' 的内容
- constexpr 数组引用参数
- 寻找有关函数定义和原型中数组引用的说明
- Initializer_list作为非模板上下文中数组引用参数的参数
- 如何使用一个动态创建的一维数组的二维数组引用仅与标准库?
- 如何返回具有大小的POD数组引用
- 在C++中返回数组引用的语法
- 是否可以声明转换函数返回数组引用而不使用typedef
- 自定义到数组引用的转换
- 类数组引用的NullReferenceException
- 数组指针与数组引用之间的差异
- 在c++中传递数组引用
- 使用特征矩阵作为特征数组引用的参数
- 如何从函数传递数组引用