{}const=>[]async()letfn</>var
開発

🧰 STL: C++ 標準ライブラリの隠れた機能

STLはベクトルとマップだけではありません。transform、accumulate、variant、rangesなどの便利なものの、あまり使われないツールを分析します。

К

Kodik

著者

1分で読める

C ++ 標準ライブラリは、しばしば過小評価される強力なツールです。誰もが vectormap、および string について知っていますが、STL(標準テンプレートライブラリ)は基本的なコンテナーだけではありません。

今日はコディックが、あまり知られていないけれど、 STLのとても便利な機能コードを強化し、よりクリーンで短くします💪

🔍 1. std::accumulate — コンパクトな集約

数値の合計を計算するための手動サイクルの代わりに:

int sum = 0;
for (int x : v) sum += x;

次のように簡単にできます。

#include <numeric>
int sum = std::accumulate(v.begin(), v.end(), 0);
🔥 10万人以上の学生が参加中

理論を読むのに疲れた?
コーディングの時間だ!

Kodik — 実践でプログラミングを学ぶアプリ。AIメンター、インタラクティブなレッスン、実際のプロジェクト。

🤖 AI 24時間
🎓 修了証
💰 無料
🚀 始める
今日参加

🌀 2. std::transform — 機能的アプローチ

各要素に操作を適用する必要がありますか?ループを書かないでください。transformを使用してください。

std::vector<int> result;
std::transform(v.begin(), v.end(), std::back_inserter(result), [](int x) {
    return x * 2;
});

🧩 3. std::anystd::variant — あらゆる種類のストレージ

std::variant<int, std::string> val = "Hello";
if (std::holds_alternative<std::string>(val)) {
    std::cout << std::get<std::string>(val);
}

🧱 4. std::unordered_mapstd::unordered_set — ハッシュテーブルの力

通常の std::mapstd::set を使用すると、ボンネットの下で動作します バランスバイナリツリー (通常は赤黒木)。つまり、挿入、検索、削除の操作にはO(log n) 時間がかかります。

しかし、std::unordered_mapstd::unordered_set は異なる方法で配置されています。 ハッシュテーブル。これにより、 中程度の難易度の操作 O(1). これにより、 はるかに速い 特に大量のデータを扱う場合に、ほとんどのアプリケーションタスクで使用されます。

🔥 例:

#include <unordered_map>
#include <string>
#include <iostream>

int main() {
    std::unordered_map<std::string, int> scores;
    scores["Alice"] = 90;
    scores["Bob"] = 75;

    std::cout << scores["Alice"]; // 90
}

std::mapとは異なり、unordered_map 要素の順序を保証しませんデータの保存順序が気にならない場合は、 使用する unordered_バージョン 最大の生産性を得るために。

🧠 いつ使う?

順番を保つ必要がありますか?

使用する

はい

std::map, std::set

いいえ

std::unordered_map, std::unordered_set

🧵 5. std::ranges (C++20以降)

#include <ranges>

auto result = v 
    | std::views::filter([](int x) { return x % 2 == 0; })
    | std::views::transform([](int x) { return x * x; });

美しくコンパクトな操作のチェーンを書くことができます。

🤯ボーナス:STLには他に何がありますか

  • std::optional — 「マジックバリュー」の安全な代替手段

  • std::span — 範囲の便利な転送

  • std::bitset — フラグを使用したコンパクトな作業

  • std::invoke — メンバー関数を含む任意の関数の呼び出し

実際のタスクでSTLの使用方法を学びたい場合は、ダウンロードしてください アプリケーション コディック。そこであなたを待っているのは:

  • 🧠 C ++のインタラクティブレッスン

  • ✅ 練習問題と解答の確認

  • 💬 デベロッパーコミュニティ

一人でプログラミングを学ぶのではなく、私たちのサポートと Telegramチャンネル 💙

🎯先延ばしをやめよう

記事は気に入った?
実践の時間だ!

Kodikでは読むだけでなく、すぐにコードを書く。理論 + 実践 = 本当のスキル。

即座に実践
🧠AIがコードを説明
🏆修了証

登録不要 • カード不要