en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels πŸ‘‰ If you want to see the tag, subscribe

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | cpp, boost, qt

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | cpp, boost, qt

Open in Telegram

ВсС самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для плюсовика ΠΈ сишника Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅. Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ своСго ΠΈΠΈ-Π°Π³Π΅Π½Ρ‚Π°: https://clc.to/tvpmDQ По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @tproger_sales_bot ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

Show more

πŸ“ˆ Analytical overview of Telegram channel Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | cpp, boost, qt

Channel Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | cpp, boost, qt (@cppproglib) in the Russian language segment is an active participant. Currently, the community unites 16 813 subscribers, ranking 7 717 in the Technologies & Applications category and 39 129 in the Russia region.

πŸ“Š Audience metrics and dynamics

Since its creation on Π½Π΅Π²Ρ–Π΄ΠΎΠΌΠΎ, the project has demonstrated rapid growth, gathering an audience of 16 813 subscribers.

According to the latest data from 26 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -53 over the last 30 days and by -12 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 10.76%. Within the first 24 hours after publication, content typically collects 4.45% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 810 views. Within the first day, a publication typically gains 748 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 2.
  • Thematic interests: Content is focused on key topics such as c++, навигация, компилятор, ΡƒΠ΄Π°Π»Ρ‘Π½ΠΊΠ°, developer.

πŸ“ Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
β€œΠ’ΡΠ΅ самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ для плюсовика ΠΈ сишника Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅. Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ своСго ΠΈΠΈ-Π°Π³Π΅Π½Ρ‚Π°: https://clc.to/tvpmDQ По Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @tproger_sales_bot ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ связь: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #W...”

Thanks to the high frequency of updates (latest data received on 27 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

16 813
Subscribers
-1224 hours
-207 days
-5330 days
Posts Archive
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «срСзка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β» (object slicing) Π² контСкстС ошибок C++?
Anonymous voting

πŸ• constexpr Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ Π² C++20: new ΠΏΡ€ΠΈ компиляции C++20 Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ new ΠΈ delete Π² constexpr-функциях. Π—Π²ΡƒΡ‡ΠΈΡ‚ Π΄ΠΈΠΊΠΎ β€” ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π°Π»Π»ΠΎΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°?
constexpr int sum() {
    int* p = new int(42);
    int result = *p;
    delete p;
    return result;
}
constexpr int x = sum(); // OK Π² C++20
⚑️ Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ: компилятор ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΡƒΡ‡Ρƒ ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ абстрактной ΠΌΠ°ΡˆΠΈΠ½Ρ‹. new создаёт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² памяти ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, delete ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΊ освобоТдённый. Никакой Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΈ Π½Π΅ происходит. ❗️ ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” transient allocation: вся ΠΏΠ°ΠΌΡΡ‚ΡŒ, выдСлСнная Π² constexpr-контСкстС, Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ освобоТдСна Π΄ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· этого контСкста. НСльзя «пронСсти» ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² runtime:
constexpr int* leak() {
    return new int(42); // Ошибка: non-transient allocation
}
❗️ Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ constexpr std::vector Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: Π²Π΅ΠΊΡ‚ΠΎΡ€ Π°Π»Π»ΠΎΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π² compile-time, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΈ дСструктор освобоТдаСт. Но нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ constexpr std::vector ΠΊΠ°ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ β€” дСструктор вызовСтся, Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²ΡƒΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ. πŸ’‘ Transient allocation β€” это пСсочница: компилятор позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с динамичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π½ΠΎ Π½Π΅ выпускаСт Π΅Ρ‘ Π½Π°Ρ€ΡƒΠΆΡƒ. πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #ΠΏΠΎΠ΄_ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ

⚑️ Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с экспСртом Proglib Academy: AI-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ Антон Будняк Антон β€” мастСр прСвращСния сырых AI-ΠΈΠ΄Π΅ΠΉ Π² отказоустой
⚑️ Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с экспСртом Proglib Academy: AI-Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ Антон Будняк Антон β€” мастСр прСвращСния сырых AI-ΠΈΠ΄Π΅ΠΉ Π² отказоустойчивыС систСмы. Он Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ MVP Π·Π° нСдСлю ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π΅ Ρ€Π°ΡΡΡ‹ΠΏΠ°Π»Π°ΡΡŒ ΠΏΠΎΠ΄ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π² сотни тысяч ΡŽΠ·Π΅Ρ€ΠΎΠ². Π—Π° Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ†Π΅Π½ΠΈΡ‚ IT-ΠΊΠΎΠΌΡŒΡŽΠ½ΠΈΡ‚ΠΈ: 🟣 ΠžΠΏΡ‹Ρ‚ Π² Ρ„ΠΈΠ½Ρ‚Π΅Ρ…Π΅ ΠΈ ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌ бизнСсС
Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΠ» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ML-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Ρ„ΠΈΠ½Ρ‚Π΅Ρ…Π΅ с экономичСским эффСктом Π±ΠΎΠ»Π΅Π΅ 100 ΠΌΠ»Π½ β‚½
🟣 Запуск ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π° 6.000+ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
Антон строит сСрвисы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ тысячи людСй Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΄Π΅.
🟣 УскоряСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ
ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π» ML-ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΈ ΠΊΡ€Π°Ρ‚Π½ΠΎ сократил врСмя ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎ Ρ€Π΅Π»ΠΈΠ·Π°
πŸ“š Π“Π΄Π΅ Антон Ρ‡Π΅Ρ€ΠΏΠ°Π΅Ρ‚ знания (Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ экспСрта): - X (Twitter) β€” Π³Π»Π°Π²Π½Ρ‹ΠΉ источник новостСй. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π±Π»ΠΎΠ³ Бориса Π§Π΅Ρ€Π½ΠΈ (создатСля Claude Code) β€” Ρ‚Π°ΠΌ Π±Π°Π·Π° ΠΏΡ€ΠΎ использованиС ИИ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅. - НСтворкинг Π² Π’Π“: Ρ‡Π°Ρ‚Ρ‹ LLM ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ ΠΈ AI-Ρ‡Π°Ρ‚ β€” здСсь ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° любой тСхничСский вопрос. - Новости AI: ΠΊΠ°Π½Π°Π»Ρ‹ Биолошная ΠΈ Denis Sexy IT. На курсС Agentops Антон ΡƒΡ‡ΠΈΡ‚ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Β«Π½Π΅ΡƒΠ±ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉΒ» бэкСнд: Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с очСрСдями, Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π°ΠΌΠΈ ΠΈ балансировкой Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваши Π°Π³Π΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ 24/7. 🎁 МайскиС Π‘ΠšΠ˜Π”ΠšΠ˜ Π² Proglib Academy! Π”ΠΎ ΠΊΠΎΠ½Ρ†Π° мая Π½Π° всС курсы Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΈ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ AgentOps ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ИИ-Π°Π³Π΅Π½Ρ‚ΠΎΠ²) дСйствуСт скидка -40%. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠΉΡ‚ΠΈ Π² AI-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠΎΠ΄ присмотром ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ². Π£Π·Π½Π°Ρ‚ΡŒ большС ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρƒ Антона: πŸ‘‰ ΠšΡƒΡ€Ρ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ AI-Π»ΠΎΠ³ΠΈΠΊΡƒ Π² бэкСнд ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвиса ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ? πŸ‘ β€” Π”Π°, ΠΆΠ΄Π΅ΠΌ Π½ΠΎΠ²Ρ‹Ρ… Π»ΠΈΡ† πŸ”₯ β€” ΠŸΠΎΠΉΠ΄Ρƒ ΠΏΠΎΠ΄ΠΏΠΈΡˆΡƒΡΡŒ Π½Π° ΠΊΠ°Π½Π°Π»Ρ‹ ΠΈΠ· списка Антона πŸƒβ€β™€οΈ Proglib Academy

🀝 Как ΡƒΠ²ΠΎΠ»ΠΈΡ‚ΡŒΡΡ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ: 8 шагов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ всС вопросы Если ΠΌΡ‹ΡΠ»ΡŒ Β«Π½Π°Π΄ΠΎ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΒ» появляСтся ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡƒΡ‚Ρ€ΠΎ, скорСС всСго,
🀝 Как ΡƒΠ²ΠΎΠ»ΠΈΡ‚ΡŒΡΡ Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎ: 8 шагов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ всС вопросы Если ΠΌΡ‹ΡΠ»ΡŒ Β«Π½Π°Π΄ΠΎ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒΒ» появляСтся ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡƒΡ‚Ρ€ΠΎ, скорСС всСго, ΠΏΠΎΡ€Π°. Но ΠΌΠ΅ΠΆΠ΄Ρƒ Β«Ρ…ΠΎΡ‡Ρƒ ΡƒΠΉΡ‚ΠΈΒ» ΠΈ Β«ΡƒΡˆΠ΅Π» Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΒ» цСлая ΠΏΡ€ΠΎΠΏΠ°ΡΡ‚ΡŒ. Π Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ 8 шагов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΉΡ‚ΠΈ Π±Π΅Π· скандала, с рСкомСндациями ΠΈ чистой ΡΠΎΠ²Π΅ΡΡ‚ΡŒΡŽ. πŸ‘‰ ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅... πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #буст

✈️ Алгоритмы Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ²: Алгоритмы поиска ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ… πŸ™‚ std::ranges::* β€” это ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈΠ· <algorithm>. Они ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ begin/end) ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ. πŸ‘ ranges::find / ranges::find_if β€” Π½Π°ΠΉΡ‚ΠΈ элСмСнт
std::vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6};

// Найти ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Ρ€Π°Π²Π½Ρ‹ΠΉ 4
auto it = std::ranges::find(v, 4);
if (it != v.end()) {
    std::cout << "НайдСно: " << *it << "\n"; // 4
}

// Найти ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ
auto it2 = std::ranges::find_if(v, [](int x) { return x > 5; });
// ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 9
❗️ Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ элСмСнт ΠΈΠ»ΠΈ end(), Ссли Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ классичСского std::find, диапазонная вСрсия ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ β€” Π½ΠΈΠΊΠ°ΠΊΠΈΡ… v.begin(), v.end(). ↗️ ranges::all_of / any_of / none_of β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° вСсь Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½
std::vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6};

bool all_positive = std::ranges::all_of(v, [](int x) { return x > 0; });
// true β€” всС элСмСнты ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅

bool any_gt_8 = std::ranges::any_of(v, [](int x) { return x > 8; });
// true β€” Π΅ΡΡ‚ΡŒ 9

bool none_neg = std::ranges::none_of(v, [](int x) { return x < 0; });
// true β€” ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π΅Ρ‚
Π’Ρ€ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΎΠ΄Π½Π° идСя: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ Π½Π° всём Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅. Π›Π΅Π½ΠΈΠ²Ρ‹Π΅ β€” all_of остановится Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ false, any_of β€” Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ true. πŸ§‹ ranges::count / ranges::count_if β€” подсчёт
auto count_ones = std::ranges::count(v, 1);       // 2
auto count_big  = std::ranges::count_if(v, [](int x) { return x > 5; }); // 2 (9, 6)
count β€” Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ совпадСниС, count_if β€” ΠΏΠΎ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ std::ranges::range_difference_t, Π° Π½Π΅ int β€” Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ptrdiff_t. πŸͺ ranges::minmax_element β€” ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈ максимум Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄
auto [min_it, max_it] = std::ranges::minmax_element(v);
std::cout << *min_it << " " << *max_it; // 1 9
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ°Ρ€Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² {min, max}. Один ΠΏΡ€ΠΎΡ…ΠΎΠ΄ вмСсто Π΄Π²ΡƒΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² min_element + max_element. Structured bindings (auto [min_it, max_it]) Π΄Π΅Π»Π°ΡŽΡ‚ ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅. ❗️ Π’Π°ΠΊΠΆΠ΅ доступны ranges::min_element ΠΈ ranges::max_element ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. А ranges::min / ranges::max Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ копию значСния (Π½Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ Π½Π΅ ссылку) β€” ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉΡ‚Π΅ это для тяТёлых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². πŸ• ΠŸΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΈ β€” супСрсила ranges-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²
struct Person {
    std::string name;
    int age;
};

std::vector<Person> people = {{"Алиса", 30}, {"Борис", 25}, {"Π’Π΅Ρ€Π°", 35}};

// Найти Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ β€” Π±Π΅Π· лямбды!
auto it = std::ranges::find(people, "Борис", &Person::name);
// it->age == 25

// Π‘Π°ΠΌΡ‹ΠΉ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ
auto youngest = std::ranges::min_element(people, {}, &Person::age);
// youngest->name == "Борис"

// ВсС Π»ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ»Π΅Ρ‚Π½ΠΈΠ΅?
bool all_adults = std::ranges::all_of(people, [](int a) { return a >= 18; }, &Person::age);
ΠŸΡ€ΠΎΠ΅ΠΊΡ†ΠΈΡ β€” Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ (ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΉ) Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚. Она Β«ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Β» Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΠ΅Ρ€Π΅Π΄ сравнСниСм. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠ΅ лямбды Π²ΠΈΠ΄Π° [](const Person& p) { return p.age; } β€” достаточно &Person::age. ❗️ ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² find ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ std::string{"Борис"}, Π° Π½Π΅ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π». Π›ΠΈΡ‚Π΅Ρ€Π°Π» "Борис" ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ const char*, ΠΈ хотя нСявноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² std::string здСсь сработаСт, явная конструкция Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ. 🩹 ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌ с views
std::map<std::string, std::vector<int>> data = {
    {"alpha", {1, 2, 3}},
    {"beta",  {4, 5}},
    {"gamma", {6, 7, 8, 9}},
};

// Бколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ большС 5 Π²ΠΎ всСх Π²Π΅ΠΊΡ‚ΠΎΡ€Π°Ρ…?
auto all_values = data | views::values | views::join;
auto count = std::ranges::count_if(all_values, [](int x) { return x > 5; });
// 4 (6, 7, 8, 9)
views::values ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€Ρ‹Π΅ элСмСнты ΠΏΠ°Ρ€ (Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹), Π° views::join Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ влоТСнности β€” склСиваСт всС Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ плоский Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² любой ranges-Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #константная_ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π”ΠΎ 31 мая ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ любой курс Proglib Academy со скидкой 40% Если Π΄Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² Python, ML, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈΠ»ΠΈ
Π”ΠΎ 31 мая ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ любой курс Proglib Academy со скидкой 40% Если Π΄Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ Π² Python, ML, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈΠ»ΠΈ AI-Π°Π³Π΅Π½Ρ‚Π°Ρ…, сСйчас самоС врСмя Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ сниТСнной Ρ†Π΅Π½Π΅. 🎁 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² β€” ΠΎΡ‚ 49.000 β‚½ (вмСсто 69.000 β‚½) ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ курс ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ² для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄Π°Ρ‡, Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ собствСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² 🎁 ΠšΡƒΡ€Ρ AgentOps β€” 129.000 β‚½ (вмСсто 149.000 β‚½) Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ LLM-ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ AI-Π»ΠΎΠ³ΠΈΠΊΡƒ Π² бэкСнд ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ сСрвиса. 🎁 ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ AI-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ β€” 23.990 β‚½ (вмСсто 31.990 β‚½) ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π±Π°Π·Π° ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, ML ΠΈ дальнСйшСго развития Π² AI. 🎁 ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для Data Science β€” ΠΎΡ‚ 29.990 β‚½ (вмСсто 39.990 β‚½) ΠšΡƒΡ€Ρ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Π½Π° собСсСдованиях Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π΄Π°Ρ‚Π°-сайСнтиста Π² Π±ΠΈΠ³Ρ‚Π΅Ρ…Π΅. 🎁 ML для старта Π² Data Science β€” 28.990 β‚½ (вмСсто 38.990 β‚½) Π Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ΡΡŒ Π² машинном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ: ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… понятий ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄ΠΎ ансамблСй, бустинга ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… систСм. 🎁 ΠžΡΠ½ΠΎΠ²Ρ‹ IT для нСпрограммистов β€” 16.990 β‚½ (вмСсто 28.990 β‚½) ΠšΡƒΡ€Ρ для IT-Ρ€Π΅ΠΊΡ€ΡƒΡ‚Π΅Ρ€ΠΎΠ², ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΎΠ»ΠΎΠ³ΠΎΠ², ΠΏΡ€ΠΎΠ΄ΠΆΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€ΠΎΠ΄Π°ΠΊΡ‚ΠΎΠ² ΠΈ всСх, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с IT, Π½ΠΎ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚ ΠΊΠΎΠ΄. 🎁 АрхитСктуры ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования β€” 27.990 β‚½ (вмСсто 37.900 β‚½) ΠžΡΠ²ΠΎΠΈΡ‚Π΅ основныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Π΅Ρ‚Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. 🎁 БпСциалист ΠΏΠΎ ИИ β€” 89.000 β‚½ (вмСсто 113.900 β‚½) ΠšΡƒΡ€Ρ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ Π² сфСрС ИИ, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ ΠΈΠ· 5 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ слоТных AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ². 🎁 Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… β€” 33.990 β‚½ (вмСсто 57.990 β‚½) ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ ΠΊ алгоритмичСским собСсСдованиям, Ρ€Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивный ΠΊΠΎΠ΄. 🎁 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° языкС Python β€” 27.990 β‚½ (вмСсто 47.390 β‚½) ΠžΡΠ²ΠΎΠΈΡ‚Π΅ Python Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅: Π±Π΅Π· сухой Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, с пошаговой ΠΏΡ€ΠΎΠΊΠ°Ρ‡ΠΊΠΎΠΉ Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΈ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π² ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ. πŸ™Œ Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ курс ΠΏΠΎ ссылкС, оставляйтС заявку, ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ ваши Ρ†Π΅Π»ΠΈ β€” https://clc.to/GHcYlg

πŸ“° БвСТСнькоС ΠΈΠ· ΠΌΠΈΡ€Π° C++ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ самых интСрСсных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π·Π° нСдСлю ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… аспСктах программирования ΠΈ ΠΈΠ½Ρ‚
πŸ“° БвСТСнькоС ΠΈΠ· ΠΌΠΈΡ€Π° C++ ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ самых интСрСсных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π·Π° нСдСлю ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… аспСктах программирования ΠΈ интСрСсных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π² ΠΌΠΈΡ€Π΅ C++. 😎 Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠ΅: β€’ 7 ΠΈΠ³Ρ€ сдСланных Π½Π° Unigine Engine β€” Π½Π° Unigine Engine всё ΠΆΠ΅ ΠΏΠΈΡˆΡƒΡ‚ ΠΈΠ³Ρ€Ρ‹ β€’ Π₯ΠΎΡ‡Π΅ΡˆΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° Π·Π°Ρ€ΡƒΠ±Π΅ΠΆΠ½ΡƒΡŽ компанию ΠΈΠ· России? β€” совСты ΠΏΠΎ поиску Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π° Ρ€ΡƒΠ±Π΅ΠΆΠΎΠΌ β€’ ΠŸΠΎΡ‡Π΅ΠΌΡƒ std::this_thread::sleep_for Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ°ΡƒΠ·Ρƒ? β€” разбираСмся ΠΏΠΎΡ‡Π΅ΠΌΡƒ sleep_for(100ms) это гарантия минимального Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ оТидания, Π½ΠΎ Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ πŸ“™ Ranges: β€’ Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹: views::join ΠΈ views::join_with β€’ Ranges: Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ πŸ”ΉπŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #свСТак

‼️ Π—Π°Π΄Π°Ρ‡Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅: lock_guard ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈ Ρ€Π΅Π²ΡŒΡŽ ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΠΉΠ΄ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ (Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒπŸ˜‰).
#include <mutex>
#include <thread>
#include <vector>
#include <iostream>

std::mutex mtx;
std::vector<int> data;

void producer() {
    for (int i = 0; i < 100; ++i) {
        std::lock_guard<std::mutex> lock(mtx);
        data.push_back(i);
    }
}

void consumer() {
    while (true) {
        std::lock_guard<std::mutex> lock(mtx);
        if (data.empty()) {
            // Π–Π΄Ρ‘ΠΌ Π΄Π°Π½Π½Ρ‹Π΅...
            std::this_thread::sleep_for(
                std::chrono::milliseconds(10));
            continue;
        }
        std::cout << data.back() << "\n";
        data.pop_back();
    }
}
Вопрос: Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с consumer()? ΠŸΠΎΡ‡Π΅ΠΌΡƒ lock_guard здСсь β€” ΠΏΠ»ΠΎΡ…ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ? πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #мСТдусобойчик

‼️ Π—Π°Π΄Π°Ρ‡Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅: lock_guard ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈ Ρ€Π΅Π²ΡŒΡŽ ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΠΉΠ΄ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ (Π΅Π»ΠΈ ΠΎΠ½Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Π΅ΡΡ‚ΡŒπŸ˜‰).
#include <mutex>
#include <thread>
#include <vector>
#include <iostream>

std::mutex mtx;
std::vector<int> data;

void producer() {
    for (int i = 0; i < 100; ++i) {
        std::lock_guard<std::mutex> lock(mtx);
        data.push_back(i);
    }
}

void consumer() {
    while (true) {
        std::lock_guard<std::mutex> lock(mtx);
        if (data.empty()) {
            // Π–Π΄Ρ‘ΠΌ Π΄Π°Π½Π½Ρ‹Π΅...
            std::this_thread::sleep_for(
                std::chrono::milliseconds(10));
            continue;
        }
        std::cout << data.back() << "\n";
        data.pop_back();
    }
}
Вопрос: Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с consumer()? ΠŸΠΎΡ‡Π΅ΠΌΡƒ lock_guard здСсь β€” ΠΏΠ»ΠΎΡ…ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ? πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #мСТдусобойчик

🐸 ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° вакансий для C++-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π·Π° нСдСлю Unreal engine/Π‘++ developer (gamedev) β€”Π£Π΄Π°Π»Ρ‘Π½ΠΊΠ° C Developer (VoIP / Telecommunications) β€” Π£Π΄Π°Π»Ρ‘Π½ΠΊΠ° Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ C++ (Middle) β€”ΠžΡ„ΠΈΡ (Москва) АрхитСктор ПО (C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ) β€” Команда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ EPC (MME, S-GW, P-GW) C++ red team developer β€” ΠΎΡ‚ 230 000 ΠΈ Π΄ΠΎ 350 000 β‚½ Π“ΠΈΠ±Ρ€ΠΈΠ΄ (Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³) Senior/Middle C/C++ Developer (System Programming / Embedded) β€” ΠΎΡ‚ 200 000 β‚½ Π£Π΄Π°Π»Ρ‘Π½ΠΊΠ° Π’Π΅Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π‘++ β€” ΠΎΡ‚ 250 000 ΠΈ Π΄ΠΎ 350 000 β‚½ ΠžΡ„ΠΈΡ/Π³ΠΈΠ±Ρ€ΠΈΠ΄ (Москва) πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #вакансии

πŸ“Œ Π—Π°Ρ‡Π΅ΠΌ Π΄Π°Ρ‚Π°-сайСнтисту ΠΌΠ°Ρ‚Π°Π½Π°Π»ΠΈΠ·? Основная компСтСнция спСциалиста ΠΏΠΎ Data Science – ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈ
+6
πŸ“Œ Π—Π°Ρ‡Π΅ΠΌ Π΄Π°Ρ‚Π°-сайСнтисту ΠΌΠ°Ρ‚Π°Π½Π°Π»ΠΈΠ·? Основная компСтСнция спСциалиста ΠΏΠΎ Data Science – ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ основныС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоит Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ спСциалисту ΠΏΠΎ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…. Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΡ„Ρ„Π΅Ρ€Ρƒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ знания? ΠžΡΡ‚Π°Π²Π»ΡΠΉΡ‚Π΅ заявку Π½Π° наш курс ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ для Data Science πŸ’™ P.S. Волько Π΄ΠΎ 31 мая Π½Π° курс (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π° всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ АкадСмии) дСйствуСт Π‘ΠšΠ˜Π”ΠšΠ 40% А ΠΊΠ°ΠΊ Ρƒ вас Π΄Π΅Π»Π° с Π²Ρ‹ΡΡˆΠ΅ΠΉ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ? ❀️ β€” Помню всё πŸ”₯ β€” Π—Π½Π°ΡŽ основы 🌚 β€” НичСго Π½Π΅ знаю πŸƒβ€β™€οΈ Proglib Academy

🐾 ΠŸΠΎΡ‡Π΅ΠΌΡƒ std::this_thread::sleep_for Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ°ΡƒΠ·Ρƒ? Если Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ sleep_for(100ms) остановит ΠΏΠΎΡ‚ΠΎΠΊ Ρ€ΠΎΠ²Π½ΠΎ Π½Π° 100 мс, Ρ‚ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. На Π΄Π΅Π»Π΅ β€” это минимальноС врСмя оТидания, Π½Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅. Когда Ρ‚Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΡˆΡŒ std::this_thread::sleep_for, происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: ΠΏΠΎΡ‚ΠΎΠΊ пСрСводится Π² состояниС WAITING Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ ОБ. Π―Π΄Ρ€ΠΎ ставит Ρ‚Π°ΠΉΠΌΠ΅Ρ€ ΠΈ ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° исполнСниС. Когда Ρ‚Π°ΠΉΠΌΠ΅Ρ€ срабатываСт, ΠΏΠΎΡ‚ΠΎΠΊ Π½Π΅ просыпаСтся ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ β€” ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ready queue ΠΈ ΠΆΠ΄Ρ‘Ρ‚, ΠΏΠΎΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ Π΅ΠΌΡƒ ΠΊΠ²Π°Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.
auto start = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::milliseconds(100));
auto elapsed = std::chrono::steady_clock::now() - start;
// elapsed ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ 102ms, 115ms, Π΄Π°ΠΆΠ΅ 130ms
⚑️ На Linux Π³Ρ€Π°Π½ΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” ΠΎΠΊΠΎΠ»ΠΎ 1–4 мс (зависит ΠΎΡ‚ CONFIG_HZ). На Windows β€” историчСски 15.6 мс, Ссли Π½Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ timeBeginPeriod(1) πŸ’‘ Если Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π½ΠΈΠΆΠ΅ миллисСкунды β€” ОБ-ΠΏΠ°ΡƒΠ·Π° Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚. Для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ spin-wait с std::chrono::high_resolution_clock, ТСртвуя CPU Ρ€Π°Π΄ΠΈ точности. 🐸 Π£Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΠΉ это ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ любого setPause-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π² game loop ΠΈΠ»ΠΈ real-time систСмах. πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #константная_ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

🍳 Ranges: Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ Π’ ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π· ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ views::join ΠΈ views::join_with β€” Β«ΡΠΏΠ»ΡŽΡ‰ΠΈΠ²Π°Π½ΠΈΠ΅Β» Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ². БСгодня β€” ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ постоянно, Π½ΠΎ ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… часто Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚. πŸ’ views::reverse β€” ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок
std::vector<int> v = {1, 2, 3, 4, 5};
for (int x : v | views::reverse) {
    std::cout << x << " "; // 5 4 3 2 1
}
❗️ Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ bidirectional_range. НапримСр, views::filter ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ bidirectional_range, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли исходный Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ сам bidirectional_range ΠΈ common_range β€” Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ для vector, deque ΠΈΠ»ΠΈ list Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° views::filter(...) | views::reverse Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° для forward_list ΠΈΠ»ΠΈ istream_view β€” Π½Π΅Ρ‚. 🏝 views::keys ΠΈ views::values β€” для ΠΏΠ°Ρ€ ΠΈ map
std::map<std::string, int> ages = {{"Алиса", 30}, {"Борис", 25}};

for (const auto& name : ages | views::keys) {
    std::cout << name << "\n"; // Алиса, Борис
}

for (int age : ages | views::values) {
    std::cout << age << "\n"; // 30, 25
}
Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ views::keys β€” это views::elements<0>, Π° views::values β€” views::elements<1>. Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π»ΡŽΠ±Ρ‹ΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ std::pair ΠΈΠ»ΠΈ std::tuple-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. 🍍 views::elements<N> β€” N-ΠΉ элСмСнт tuple/pair
std::vector<std::tuple<int, std::string, double>> records = {
    {1, "Alice", 3.14},
    {2, "Bob",   2.71},
};

// Π‘Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки (индСкс 1)
for (const auto& s : records | views::elements<1>) {
    std::cout << s << "\n"; // Alice, Bob
}
ΠžΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Π°Ρ вСрсия keys/values β€” ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ элСмСнт с индСксом N ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. ИндСкс задаётся Π½Π° этапС компиляции, поэтому Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ β€” ошибка компиляции, Π° Π½Π΅ UB. πŸ• views::counted β€” N элСмСнтов начиная с ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°
std::vector<int> v = {10, 20, 30, 40, 50};
auto it = v.begin() + 1; // ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 20

// 3 элСмСнта начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 1
auto three = views::counted(it, 3);
// 20, 30, 40
Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ views::take, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ, counted ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ + количСство. Π­Ρ‚ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Β«Π³ΠΎΠ»Ρ‹ΠΉΒ» ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π±Π΅Π· ΠΏΠ°Ρ€Π½ΠΎΠ³ΠΎ end β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт C-массива ΠΈΠ»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ std::find. ❗️ ΠžΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ it + n Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹, Π»Π΅ΠΆΠΈΡ‚ Π½Π° вас β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ Π½Π΅Ρ‚. 🍿 views::all β€” ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² view явно
std::vector<int> v = {1, 2, 3};

// views::all явно создаёт view ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
auto all_view = views::all(v);

// Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ view
Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½, Ссли | ΠΈ Ρ‚Π°ΠΊ ΠΎΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚? Π‘Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ viewable_range, ΠΈΠ»ΠΈ для хранСния view Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π΅Π· auto&&. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ views::all вызываСтся нСявно ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ β€” Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° явный Π²Ρ‹Π·ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ яснСС. πŸ‹ views::common β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ begin/end ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° МногиС «классичСскиС» Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ конструкторы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ begin() ΠΈ end() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. Π£ Π»Π΅Π½ΠΈΠ²Ρ‹Ρ… view это часто Π½Π΅ Ρ‚Π°ΠΊ β€” end() ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ sentinel, Π° Π½Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.
auto view = some_range | views::filter(...);

// Если Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² старый Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:
auto common_view = view | views::common;
std::copy(common_view.begin(), common_view.end(), output);
❗️ Если Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡƒΠΆΠ΅ common_range, Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ β€” просто пробрасываСт ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ. Накладных расходов Π² этом случаС ноль. 🩹 ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΡƒΠ΅ΠΌ всё вмСстС
std::map<std::string, std::vector<int>> data = {
    {"alpha", {1, 2, 3}},
    {"beta",  {4, 5}},
    {"gamma", {6, 7, 8, 9}},
};

// ВсС значСния β†’ ΡΠΏΠ»ΡŽΡ‰ΠΈΡ‚ΡŒ β†’ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ порядок β†’ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 4
auto result = data
    | views::values
    | views::join
    | views::reverse
    | views::take(4);

for (int x : result) {
    std::cout << x << " "; // 9 8 7 6
}
Ни ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° β€” ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт протягиваСтся Ρ‡Π΅Ρ€Π΅Π· всю Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π»Π΅Π½ΠΈΠ²ΠΎ, ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ. πŸ“ΠΠ°Π²ΠΈΠ³Π°Ρ†ΠΈΡ: Вакансии β€’ Π—Π°Π΄Π°Ρ‡ΠΈ β€’ БобСсы Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° #константная_ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

πŸ”₯ Π‘Π°Π·Π° ΠΏΠΎ экономикС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΡ‚ AI Platform Lead ΠΈΠ· Bitrix24 Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ, Π‘Π΅Ρ€Π³Π΅ΠΉ НотСвский. AI Platform Lead Π²
πŸ”₯ Π‘Π°Π·Π° ΠΏΠΎ экономикС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΎΡ‚ AI Platform Lead ΠΈΠ· Bitrix24 Π—Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ, Π‘Π΅Ρ€Π³Π΅ΠΉ НотСвский. AI Platform Lead Π² Bitrix24. Он ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… экспСртов нашСго курса AgentOps. На своих лСкциях ΠΎΠ½ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ экономику AI-Π°Π³Π΅Π½Ρ‚ΠΎΠ², ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², LLM-инфраструктуру ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… систСм Π² ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄. ΠœΡ‹ попросили БСргСя ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ косты Π½Π° LLM Π² ΠΏΡ€ΠΎΠ΄Π΅. БохраняйтС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡ΠΊΡƒ ΠΏΠΎ prefix cache ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ΅, которая Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ влияСт Π½Π° ваши дСньги. Как говорят создатСли Manus:
β€œKV-cache hit rate is the single most important metric for a production-stage AI agent.”
πŸ›  Π§Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡ΠΊΠΈ (ΠΊΠΎΠΌΠ±ΠΎ ΠΈΠ· 3 статСй + ΠΊΠΎΠ΄):
Π­ΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ° ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ β€” особСнности ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ² ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹. ЧастыС Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ ваш кэш постоянно сбрасываСтся ΠΈ Π²Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚Π΅ большС. Кэш Π² AI-Π°Π³Π΅Π½Ρ‚Π°Ρ… β€” спСцифика Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… систСмах.
πŸ’ Π’ΠΈΡˆΠ΅Π½ΠΊΠ° Π½Π° Ρ‚ΠΎΡ€Ρ‚Π΅: Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ SKILL для Π°Π³Π΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π²ΡŒΡŽ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΈΠ·ΠΊΠΎΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ Π² кэш. β€” Π—Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΎ-ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π½Π° GitHub P.S. Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ БСргСя Π²ΠΆΠΈΠ²ΡƒΡŽ β€” Π»ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π° конфСрСнциях Kode Waves (ΠΌΠ°ΠΉ), Conversations AI ΠΈ Highload Spb (июнь). 🎁 Акция Π² Ρ‡Π΅ΡΡ‚ΡŒ старта ΠΏΡ€ΠΎΠ΄Π°ΠΆ! ΠŸΡ€ΡΠΌΠΎ сСйчас ΠΏΡ€ΠΈ ΠΏΠΎΠΊΡƒΠΏΠΊΠ΅ Π˜Π½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΠΊΠ° Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°ΠΌ курса Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ИИ-Π°Π³Π΅Π½Ρ‚ΠΎΠ²Β» Π² ΠΏΠΎΠ΄Π°Ρ€ΠΎΠΊ. πŸ‘‰ Π—Π°Π±Ρ€Π°Ρ‚ΡŒ 2 курса ΠΏΠΎ Ρ†Π΅Π½Π΅ 1 ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C/C++ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° | cpp, boost, qt - Statistics & analytics of Telegram channel @cppproglib