我正在編寫有關「簡單」練習的編碼問題,該練習是關於對n個整數的向量中的內容進行排序的。問題是編譯器不接受void作爲函數sort的類型(並且它必須是void函數)。但我不明白爲什麼。對於類型匹配的變量(例如,指針< - > v.begin()),但對於它沒有的功能。任何幫助感謝!這裏是我的代碼:有關向量參數的void函數的錯誤
#include <iostream>
#include <vector>
typedef std::vector<int>::iterator Vit;
void sort(Vit begin, Vit end){
int len = end - begin;
for(begin; begin < end; ++begin){
for(int i = 1; i < len; ++i){
if(*begin < *(begin +i)){
*begin = *(begin + i);
}
}
}
std::cout<< "* ";
for(begin; begin < end; ++begin){
std::cout<< *begin<< " ";
}
std::cout<< "*";
return;
}
int main(){
int n;
std::cin >> n;
std::vector<int> v(n);
for(Vit it = v.begin();it != v.end(); ++it){
std::cin >> *it;
}
void sort (v.begin() , v.end());
}
在主,改變'無效的sort(v.begin(),v.end());''來排序(v.begin(),v.end ());'。 –
正確!非常感謝這是一個非常愚蠢的錯誤... 你能解釋一下爲什麼代碼不起作用嗎?它應該對矢量內的元素進行排序。 –
這聽起來像你可能需要學習如何使用調試器來遍歷你的代碼。使用一個好的調試器,您可以逐行執行您的程序,並查看它與您期望的偏離的位置。如果你打算做任何編程,這是一個重要的工具。進一步閱讀:** [如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver