Настоящий View в C++20 должен наследовать от
std::ranges::view_base или std::ranges::view_interface<T>. Давайте создадим практический пример — stride_view, который пропускает элементы диапазона с заданным шагом.Любой приличный view должен наследоваться от
std::ranges::view_interface<T>. Это даёт тебе begin(), end(), size() и прочие плюшки бесплатно.template<std::ranges::input_range R>
class stride_view : public std::ranges::view_interface<stride_view<R>> {
private:
// Если R уже view, используем R. Иначе — ref_view для безопасности
R base_;
std::ranges::range_difference_t<R> stride_;
public:
stride_view() = default;
stride_view(R base, std::ranges::range_difference_t<R> stride)
: base_(std::move(base)), stride_(stride) {
// Критическая проверка: stride должен быть положительным!
if (stride_ <= 0) {
throw std::invalid_argument("stride must be > 0");
}
}
auto begin() {
return stride_iterator<R>{ std::ranges::begin(base_),
std::ranges::end(base_), stride_ };
}
auto begin() const {
return stride_iterator<R>{ std::ranges::begin(base_),
std::ranges::end(base_), stride_ };
}
auto end() {
return stride_sentinel<R>{};
}
auto end() const {
return stride_sentinel<R>{};
}
};
Итератор — это сердце view. На каждый
operator++() он прыгает на stride_ позиций вперёд, не переходя за конец диапазона:template<std::ranges::input_range R>
struct stride_sentinel {};
template<std::ranges::input_range R>
struct stride_iterator {
std::ranges::iterator_t<R> current_;
std::ranges::sentinel_t<R> end_;
std::ranges::range_difference_t<R> stride_;
// Pre-increment: ++it
stride_iterator& operator++() {
// 🔴 Критический момент: проверяем, не за пределами ли мы
for (int i = 0; i < stride_ && current_ != end_; ++i) {
++current_;
}
return *this;
}
// Post-increment: it++
stride_iterator operator++(int) {
auto tmp = *this;
++(*this);
return tmp;
}
auto operator*() const {
return *current_;
}
// Сравнение с концом диапазона через sentinel
bool operator==(const stride_sentinel<R>&) const {
return current_ == end_;
}
};
begin() и end() могут быть разных типов в C++20 ranges. Это позволяет избежать ошибки типов при сравнении.std::vector v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
auto strided = stride_view(v, 2);
for (auto x : strided) {
std::cout << x << " "; // 0 2 4 6 8
}for (auto x : v | std::views::stride(2)) {
std::cout << x << " "; // 0 2 4 6 8
}🫰 std::views::stride уже входит в стандартную библиотеку! Пример выше — исключительно учебный📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1👾1
🐸 Подборка вакансий для C++-разработчиков за неделю
Инженер-программист С++ — Офис (Воронеж)
C++ Developer (Gamedev, MMORPG) — Удалёнка/Гибрид (Калининград)
Программист С/Linux — Удалёнка
Разработчик С/С++ Control Plane — от 250 000 ₽ Удалёнка
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#вакансии
Инженер-программист С++ — Офис (Воронеж)
C++ Developer (Gamedev, MMORPG) — Удалёнка/Гибрид (Калининград)
Программист С/Linux — Удалёнка
Разработчик С/С++ Control Plane — от 250 000 ₽ Удалёнка
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#вакансии
Коллега написал таймаут для сетевого запроса и клянётся, что «иногда он срабатывает мгновенно, а иногда висит вечно». Особенно после перевода часов. Найдёшь причину?
#include <chrono>
using namespace std::chrono;
bool wait_for_response(Connection& conn, int timeout_ms) {
auto deadline = system_clock::now() + milliseconds(timeout_ms);
while (system_clock::now() < deadline) {
if (conn.has_data()) return true;
std::this_thread::sleep_for(milliseconds(10));
}
return false;
}
Задача: объясни, почему таймаут ведёт себя непредсказуемо, и перепиши функцию так, чтобы она работала корректно всегда.
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁1
Media is too big
VIEW IN TELEGRAM
🔥 Не называйте любого продвинутого чат-бота «ИИ-агентом»!
Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru, наглядно разбирает уровни абстракции ИИ-продуктов и убирает путаницу в понятиях.
Что внутри видео:
- Почему ассистент и агент принципиально разные сущности;
- Как ассистент может быть просто «обёрткой» над LLM, а может скрывать под капотом сложнейшую мультиагентную систему;
- Как понимать архитектуру глубже, чтобы проектировать сильные решения.
Начните создавать агентные системы с нашего бесплатного демо-урока. Всего за 2 часа разберем внутреннее устройство агента, научим его чинить свой собственный код и сохранять контекст после перезапуска.
🔗 Забрать бесплатный демо-урок
Дмитрий Юдин, руководитель AI/ML-направления в Сloud․ru, наглядно разбирает уровни абстракции ИИ-продуктов и убирает путаницу в понятиях.
Что внутри видео:
- Почему ассистент и агент принципиально разные сущности;
- Как ассистент может быть просто «обёрткой» над LLM, а может скрывать под капотом сложнейшую мультиагентную систему;
- Как понимать архитектуру глубже, чтобы проектировать сильные решения.
Начните создавать агентные системы с нашего бесплатного демо-урока. Всего за 2 часа разберем внутреннее устройство агента, научим его чинить свой собственный код и сохранять контекст после перезапуска.
🔗 Забрать бесплатный демо-урок
🥱2😁1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Эффект «затишья перед бурей» — что будет с зарплатами и наймом в IT после 2027 года
• Что на самом деле измеряет std::chrono::system_clock? — разбираемся какие проблемы могут быть с system_clock
📙 Ranges:
• Собственный View-адаптер
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• Эффект «затишья перед бурей» — что будет с зарплатами и наймом в IT после 2027 года
• Что на самом деле измеряет std::chrono::system_clock? — разбираемся какие проблемы могут быть с system_clock
📙 Ranges:
• Собственный View-адаптер
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
🚀 Уже завтра стартует новый поток курса «ИИ-агенты»!
Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний.
Старт уже завтра!
Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока!
Всего за 2 часа вы заглянете под капот ИИ-агента, поймете, чем мышление модели отличается от ее ответа, и научите систему чинить собственный код. Это идеальный способ протестировать нашу платформу перед покупкой.
🔗 Пройти демо-урок и занять место на курсе
Мы собрали мощнейший состав преподавателей. Учить вас проектировать архитектуру и собирать продакшн-агентов будут инженеры и исследователи из топовых IT-компаний.
Старт уже завтра!
Сомневаетесь, подойдет ли вам программа и подача? Начните с бесплатного демо-урока!
Всего за 2 часа вы заглянете под капот ИИ-агента, поймете, чем мышление модели отличается от ее ответа, и научите систему чинить собственный код. Это идеальный способ протестировать нашу платформу перед покупкой.
🔗 Пройти демо-урок и занять место на курсе
🥱3😁1
Forwarded from Азбука айтишника
Вы открываете «терминал», набираете
ls — и кажется, что всё делает одна программа. На самом деле их две, и путаница между ними мешает понять половину советов из интернета.Изначально терминал был железкой: экран и клавиатура, подключённые проводом к большому компьютеру. Сегодня это программа-эмулятор (iTerm, Windows Terminal, Gnome Terminal), которая только принимает нажатия клавиш и рисует текст на экране.
Оболочка (shell) — программа, которая читает вашу команду, разбирает её и просит операционную систему запустить нужный процесс. Bash, Zsh, Fish — это всё оболочки, и они разные: команда, работающая в bash, может не завестись в fish.Терминал — как браузер, а оболочка — как сайт внутри него. Браузер рисует страницу, но логика живёт не в нём.
Пока вы печатаете, оболочка ничего не знает — символы обрабатывает терминал. И только после Enter строка уходит в оболочку, которая решает, что с ней делать: выполнить встроенную команду вроде
cd самой или запустить отдельную программу через ОС.Вертикальная черта склеивает процессы в цепочку: вывод одного сразу становится вводом другого, без временных файлов на диске.
cat log.txt | grep ERROR | wc -l
.zshrc, .bashrc). Кривые цвета и эмодзи — это к терминалу.❤️ — в том, что был в системе
🤩 — поставил свой: iTerm, Alacritty, Ghostty, WezTerm и т.д.
🌚 — только внутри VS Code
🔥 — вообще не открываю терминал
👾 — Другое (напишу в комментариях)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤩4🌚2😁1
🔥 Стартуем СЕГОДНЯ! Новый поток курса «Разработка ИИ-агентов» открыт
По этому поводу мы решили выложить закрытую запись одного из уроков из программы. Найти её в поиске YouTube нельзя — она доступна только по ссылке и всем, кто будет на курсе.
Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций.
Что внутри урока:
После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning.
👉Смотреть закрытый урок на YouTube
Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться.
🔗 Занять место на курсе
По этому поводу мы решили выложить закрытую запись одного из уроков из программы. Найти её в поиске YouTube нельзя — она доступна только по ссылке и всем, кто будет на курсе.
Внутри глубокий разбор LLM от Алексея Яндутова (Senior ML-инженер, развивал ответы «Алисы» и «Нейро» в Яндексе). Учимся получать точный результат без галлюцинаций.
Что внутри урока:
- Устройство LLM.
- Рабочие шаблоны промптов (Persona, Chain-of-Thought и др.).
- Разбор реального кейса Яндекса. Как автоматизировать разметку, обойти качество людей на 5% и срезать косты на 60%.
После просмотра вы поймете, когда хватает промпт-инжиниринга, а когда нужен RAG или fine-tuning.
👉Смотреть закрытый урок на YouTube
Понравился урок? Переходите на новый уровень! Оставляйте заявку на курс, чтобы научиться проектировать надежные автономные системы. Обучение началось, но вы еще успеваете присоединиться.
🔗 Занять место на курсе
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Какие часы обязаны быть монотонными (никогда не идут назад, не подвержены переводу системного времени)?
Anonymous Quiz
11%
system_clock
53%
steady_clock
15%
high_resolution_clock
13%
utc_clock
8%
Все перечисленные
1 августа Яндекс проведет Back to Back — бэкенд- конференцию, которая пройдет в Москве, Белграде и Ереване
Участников ждут инженерные доклады и разбор реальных production-проблем. В Москве состоится трек C++ Zero Cost — про производительность, системную разработку и инженерные задачи на C++, там же пройдет Architecture & Performance — про архитектуру, производительность и реальные production-задачи.
На конференции выступят эксперты из Яндекса, Авито, Positive Technologies и других компаний. Что планируют в Москве:
🔅Новости со встречи Международного комитета C++ — про интересные возможности C++26, перспективы языка и планы на C++29 расскажет Антон Полухин из Яндекса
🔅9 миллиардов этажей concurrency — база про concurrency, parallelism и многопоточность от руководителя инфраструктуры поиска Авито Андрея Аксенов
🔅Сверлим дыры в луне: добавляем поддержку языка LuaJIT в eBPF-профилировщик Perforator — ограничения eBPF, сложность устройства LuaJIT и челленджи профилирования динамических языков от Саввы Лебедева из Positive Technologies
Помимо докладов, в Москве участников ждут экспертные сессии 1:1 и выступление питерской группы «Научно-технический рэп» с хитами «Алкоритм», «Тыжпрограммист».
Программа и регистрация — тут.
Участников ждут инженерные доклады и разбор реальных production-проблем. В Москве состоится трек C++ Zero Cost — про производительность, системную разработку и инженерные задачи на C++, там же пройдет Architecture & Performance — про архитектуру, производительность и реальные production-задачи.
На конференции выступят эксперты из Яндекса, Авито, Positive Technologies и других компаний. Что планируют в Москве:
🔅Новости со встречи Международного комитета C++ — про интересные возможности C++26, перспективы языка и планы на C++29 расскажет Антон Полухин из Яндекса
🔅9 миллиардов этажей concurrency — база про concurrency, parallelism и многопоточность от руководителя инфраструктуры поиска Авито Андрея Аксенов
🔅Сверлим дыры в луне: добавляем поддержку языка LuaJIT в eBPF-профилировщик Perforator — ограничения eBPF, сложность устройства LuaJIT и челленджи профилирования динамических языков от Саввы Лебедева из Positive Technologies
Помимо докладов, в Москве участников ждут экспертные сессии 1:1 и выступление питерской группы «Научно-технический рэп» с хитами «Алкоритм», «Тыжпрограммист».
Программа и регистрация — тут.
❤1
Forwarded from Азбука айтишника
🤖 У нас уже отобрали работу роботы или есть другие угрозы?
Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов.
👉 Статья
Азбука айтишника
#свежак
Забудь про апокалиптичные прогнозы «AI отберет работу». Реальность интереснее и коварнее: появились новые правила игры, новые способы обмана заказчиков и новая ценность для тех, кто умеет думать головой. Разбираю пять таких сдвигов.
👉 Статья
Азбука айтишника
#свежак
😁1