Не работает метод sort() в с++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {10, 65, 7, 0, 21, 99, 44, 39, 15, 52};
arr.sort(arr.begin(), arr.end());
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
}
Я получаю ошибку:
main.cpp:8:9: error: request for member ‘sort’ in ‘arr’, which is of non-class type ‘int [10]’
8 | arr.sort(arr.begin(), arr.end());
| ^~~~
main.cpp:8:18: error: request for member ‘begin’ in ‘arr’, which is of non-class type ‘int [10]’
8 | arr.sort(arr.begin(), arr.end());
| ^~~~~
main.cpp:8:31: error: request for member ‘end’ in ‘arr’, which is of non-class type ‘int [10]’
8 | arr.sort(arr.begin(), arr.end());
| ^~~
Ответы (1 шт):
Автор решения: S.H.
→ Ссылка
Можно так:
#include <iostream>
#include <algorithm>
#include <array>
using namespace std;
int main() {
array<int, 10> arr = {10, 65, 7, 0, 21, 99, 44, 39, 15, 52};
sort(arr.begin(), arr.end());
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
}
Фактически, в исходном коде у Вас три проблемы:
sort() нужно вызывать не у сортируемого объекта, а "сам по себе" (это отличие больно бъет по мозгам при переходе на C++ с такого языка, например, как C#)
итак, пытаемся написать
int arr[] = {10, 65, 7, 0, 21, 99, 44, 39, 15, 52};
sort(arr.begin(), arr.end());
и получаем две другие ошибки: begin() и end() у int[] - нету.
именно эту проблему я решил, перейдя на "более продвинутый" контейнер array.
Но можно и "по старому", просто вызвать метод sort с правильными аргументами:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {10, 65, 7, 0, 21, 99, 44, 39, 15, 52};
sort(&arr[0], &arr[9]);
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
}
А еще мне в комментариях подсказали, как то же самое можно сделать гораздо правильнее, спасибо уважаемому ARHovsepyan:
using namespace std;
int main() {
int arr[] = {10, 65, 7, 0, 21, 99, 44, 39, 15, 52};
sort(begin(arr), end(arr));
for (int i = 0; i < 10; i++) {
cout << arr[i] << " ";
}
}