我有以下功能:

template <typename T, size_t SIZE>
void minSortLoop(array<T, SIZE>& a){
    for(size_t o = 0; o < SIZE; o++) {
        size_t minIx = 0;
        for(size_t i = o + 1; i < SIZE; i++) {
            if(a[i] < a[minIx]) {
                minIx = i;
            }
        }
        swap(a[o], a[minIx]);
    }
}

我喜欢从其他位置调用它:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(arr);

但是我得到了错误:



如何正确调用排序函数?

最好的祝福 :-)

PS:我不允许使用std::sort。

编辑1:

@弗朗索瓦·莫伊桑(FrançoisMoisan):

我试图以其他方式通过:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(&arr);

错误:



和:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(*arr);

错误:



不知道如何称呼它。该引用建议类似于我的第一个示例here

@tadman:

我需要通过大小。这是从任务描述中给出的:-(

@ Jarod42:这是哪个编译器?我在Windows 7下的Eclipse中使用Cygwin。

@pasasap:是的,我编译了它,或者至少尝试了。导致描述的错误。

编辑2:

正如@pasasap在评论之一中提到的那样,问题似乎出在 eclipse 。没有人知道解决方案而不关闭cody-analysis吗?

最佳答案

应该只是

std::array<int, 3> arr = {3,1,-9};
minSortLoop(arr); // not *arr or &arr

10-05 23:35