170 похожих чатов

#Include <iostream> #include <vector> using Vector = std::vector<int32_t>; template <typename RandomIt> requires std::random_access_iterator<RandomIt> using Indexes

= std::pair<RandomIt, RandomIt>;

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
Indexes<RandomIt> Partition(RandomIt start, RandomIt end, RandomIt pivot) {
RandomIt pivot_start = start;
RandomIt iter = start;
RandomIt pivot_end = end;
while (iter <= pivot_end) {
if (*iter < *pivot) {
std::swap(*pivot_start, *iter);
++pivot_start;
++iter;
} else if (*iter > *pivot) {
std::swap(*iter, *pivot_end);
--pivot_end;
} else {
++iter;
}
}
return std::make_pair(pivot_start, pivot_end);
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
void NonQuickSort(RandomIt start, RandomIt end) {
if (start >= end) {
return;
}

Indexes<RandomIt> pivot_borders = Partition(start, end, start);
NonQuickSort(start, pivot_borders.first - 1);
NonQuickSort(pivot_borders.second + 1, end);
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
RandomIt GetMedian(RandomIt start, RandomIt end) {
Vector tmp(start, end + 1);
NonQuickSort(tmp.begin(), tmp.end() - 1);
size_t median_index =
tmp.size() % 2 == 1 ? tmp.size() / 2 : tmp.size() / 2 - 1;
return tmp.begin() + median_index;
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
RandomIt QuickSelect(RandomIt start, RandomIt end, int32_t kth) {
if (start == end) {
return start;
}
int32_t fiver_cont = (end - start + 1) / 5;
if ((end - start + 1) % 5 != 0) {
++fiver_cont;
}
std::vector<RandomIt> medians;
medians.reserve(fiver_cont);
RandomIt index = start;
while (index + 5 < end) {
medians.push_back(GetMedian(index, index + 4));
index += 5;
}
medians.push_back(GetMedian(index, end));
RandomIt median =
QuickSelect(medians.begin(), (medians.end() - 1), (medians.size() - 1) / 2);
Indexes<RandomIt> pivot_borders = Partition(start, end, median);
if (kth <= pivot_borders.first - start) {
return QuickSelect(start, pivot_borders.first, kth);
}
if (kth <= pivot_borders.second - start) {
return median;
}
return QuickSelect(pivot_borders.second + 1, end,
kth - (pivot_borders.second - start + 1));
}

template <typename RandomIt>
requires std::random_access_iterator<RandomIt>
void QuickSort(RandomIt start, RandomIt end) {
if (start >= end) {
return;
}
size_t median_index = (end - start + 1) % 2 == 1 ? (end - start + 1) / 2
: (end - start + 1) / 2 - 1;
RandomIt pivot = QuickSelect(start, end, median_index);
Indexes<RandomIt> pivot_borders = Partition(start, end, pivot);
QuickSort(start, pivot_borders.first - 1);
QuickSort(pivot_borders.second + 1, end);
}

int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int32_t count;
std::cin >> count;
Vector nums(count);
for (int32_t i = 0; i < count; ++i) {
std::cin >> nums[i];
}
QuickSort(nums.begin(), nums.end()- 1);
for (int32_t i = 0; i < count; ++i) {
std::cout << nums[i] << ' ';
}
}
Почему не компилируется код? Огромное полотно логов

5 ответов

22 просмотра

Может, не тот стандарт языка выбрал? main.cpp:6:1 : note: ‘requires’ only available with ‘-std=c++20’ or ‘-fconcepts’ main.cpp:10:1: error: ‘requires’ does not name a type

Степан- Автор вопроса

компилятор видит твоё полотно кода и принял вызов

Смотри на первую ошибку

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
I just installed it but how do I use it?
Talula
12
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
Карта сайта