![](/img/trans.png)
[英]Create a C++ template function that will return an std::array of a specific size
[英]C++ template function with std::array
我有以下功能:
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);
但是我得到了错误:
说明资源路径位置类型无效的参数'候选者为:void minSortLoop(?&)'Test.cpp / g测试行23语义错误
说明资源路径位置类型无匹配函数可调用'minSortLoop(std :: array *)'Test.cpp / g测试行23 C / C ++问题
如何正确调用排序函数?
最好的祝福 :-)
PS:我不允许使用std :: sort。
编辑1:
@弗朗索瓦·莫伊桑(FrançoisMoisan):
我试图以其他方式通过:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(&arr);
错误:
说明资源路径位置类型无效的参数'候选者为:void minSortLoop(?&)'Test.cpp / g测试行23语义错误
说明资源路径位置类型无匹配函数可调用'minSortLoop(std :: array *)'Test.cpp / g测试行23 C / C ++问题
和:
std::array<int, 3> arr = {3,1,-9};
minSortLoop(*arr);
错误:
说明资源路径位置类型无效的参数'候选者为:void minSortLoop(?&)'Test.cpp / g测试行23语义错误
说明资源路径位置类型与'operator *'不匹配(操作数类型为'std :: array')Test.cpp / g测试行23 C / C ++问题
不知道如何称呼它。 参考文献建议类似我在这里的第一个示例。
@tadman:
我需要通过大小。 这是从任务描述中给出的:-(
@ Jarod42:这是哪个编译器? 我在Windows 7下的Eclipse中使用Cygwin。
@pasasap:是的,我编译了它,或者至少尝试了。 导致描述的错误。
编辑2:
正如@pasasap在评论之一中提到的那样,问题似乎出在日食。 没有人知道解决方案而不关闭cody-analysis吗?
应该只是
std::array<int, 3> arr = {3,1,-9};
minSortLoop(arr); // not *arr or &arr
问题是我的IDE Eclipse。 一旦我关闭了代码分析功能,它就会按预期进行编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.