n個の整数のベクトルの内部にあるものをソートすることについて「簡単な」演習についてコーディングの問題があります。問題は、コンパイラがfunction sortの型としてvoidを受け入れないことです(そして、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());
}
を、 '無効ソート(v.begin()、v.end())に変更;' 'ソート(v.begin()、v.endへ()); '。 –
正解!ありがとう、それは本当に愚かなエラーです... なぜコードが動作しないのか私に説明できますか?ベクトルの内部の要素をソートする必要があります。 –
デバッガを使ってコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver