[英]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.