C ++ 標準ライブラリは、しばしば過小評価される強力なツールです。誰もが vector、map、および 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);
🌀 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::any と std::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_map と std::unordered_set — ハッシュテーブルの力
通常の std::map と std::set を使用すると、ボンネットの下で動作します バランスバイナリツリー (通常は赤黒木)。つまり、挿入、検索、削除の操作にはO(log n) 時間がかかります。
しかし、std::unordered_map と std::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_バージョン 最大の生産性を得るために。
🧠 いつ使う?
順番を保つ必要がありますか? | 使用する |
|---|---|
はい |
|
いいえ |
|
🧵 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チャンネル 💙
