У меня возникла проблема с кодированием о «простом» упражнении о сортировке того, что находится внутри вектора числа n целых чисел. Проблема в том, что компилятор не принимает void как тип для сортировки функции (и это должна быть функция void). Но я действительно не понимаю, почему. Для переменных тип соответствует (указатель < -> v.begin(), например), но для fucntion это не так. Любая помощь ценится! Вот мой код:Ошибка о функции 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()); '. –
Правильно! Большое спасибо, это действительно глупая ошибка ... Не могли бы вы также объяснить мне, почему код не работает? Он должен сортировать элементы внутри вектора. –
Похоже, вам, возможно, потребуется научиться использовать отладчик для выполнения кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver