Menu
CoddyTech
学習パス

C++のデータ構造とアルゴリズム

STLは、このパスをライブラリにしたものです。std::vector、std::unordered_map、std::priority_queue、std::setは、それぞれ動的配列、ハッシュテーブル、ヒープ、平衡木です。そのひとつひとつをC++のクラスとポインタで実装し、あとはどの呼び出しのコストもわかったうえでSTLを使います。ビット演算もC++そのもので教えています。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。

394 レッスン284 チャレンジ702 クイズの問題

  • 初心者向け
  • sparkles iconAIによるコーディングサポート
  • hint icon実践的なインタラクティブレッスン
  • volume On icon全レッスンに音声ナレーション付き
  • quiz icon知識を確かめるクイズ
  • certificate iconパス全体で23枚の無料修了証

C++のDSA、ステップごとに

39 コース394 レッスン284 チャレンジ702 クイズの問題

各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをC++で開きます。まだC++で教えていない2つのコースは、ステップのあとに載せています。

  1. 1
    このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをC++のクラスとポインタでゼロから実装し、実際に問題を解くのに使います。これを終えると、std::stack、std::queue、std::unordered_mapは自分で書いたことのある構造になります。開始
  2. 2
    このステップを始める開始双方向連結リスト、ヒープと優先度付きキュー、トライ木、グラフ、そして自己平衡するAVL木。PythonやJavaのヒープが最小ヒープなのに対し、std::priority_queueはデフォルトで最大ヒープです。一度自分で書いてしまえば、std::greaterで反転させるのは自明です。開始
  3. 3
    このステップを始める開始バブル、選択、挿入、マージ、クイック、ヒープ、計数、基数ソートを、C++で書き、可視化ツールで眺めます。std::sortはたいていイントロソート(ヒープソートに切り替わるクイックソート)で、std::stable_sortはマージソートです。その選択がなぜ理にかなっているのかが、このステップでわかります。開始
  4. 4
    このステップを始める開始再帰のチャレンジ問題とビット演算。どちらもC++で、ビット演算コースはそもそもC++向けに書かれています。動的計画法はPythonで教えるため、ステップのあとに載せていますが、そのメモ化テーブルはそのままstd::vectorに置き換えられます。開始
  5. 5
    このステップを始める開始幅優先探索と深さ優先探索、ダイクストラ法、ベルマン・フォード法、トポロジカルソート、クラスカル法とプリム法を、ステップ2で作ったグラフの上でC++で学びます。ダイクストラ法の優先度付きキューはstd::greaterを指定したstd::priority_queue、つまりステップ2のヒープをライブラリにしたものです。開始
  6. 6
使える機能
コーディングを学ぶために使うすべて

実践で学ぶ

実際のコードを書き、データベースをクエリし、ウェブサイトを構築し、AIプロンプトをマスターしましょう。インタラクティブなレッスンで現代の開発者に必要なすべてのスキルを網羅しています。

playground.js
コードエディタ
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
テスト #1test Case Success icon
テスト #2test Case Success icon
テスト #3test Case Failure icon
入力
"Alex"
出力
"Hello, Coddy! Alex"

連続記録を築こう

継続して進捗を見守りましょう!毎日のコーディング習慣を追跡し、フリーズ日で連続記録を守り、毎日参加することで報酬を獲得しましょう。

12 日連続

明日も戻ってきて連続記録を維持しましょう!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

ダブル・オア・ナッシング

7日中5日目

fire Freeze icon

連続記録フリーズ

2 left

どこでも学べる

コーディングの旅を持ち歩こう!セットアップ不要、ダウンロード不要 - 開いてすぐにコーディング開始。iOS、Android、Webで4.9星評価で利用可能。

Python
7ストリーク
250スコア
5エネルギー
変数
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
続ける
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
ジャーニー
目標
リーダーボード
プロフィール
4.9
星星星星星
評価

あなたは一人じゃない

グローバルリーダーボードで競い、友達を招待して報酬を獲得し、お互いの成功を祝いましょう。プログラミングは友達と一緒の方が楽しい!

チャレンジャーリーグ
チャレンジャーリーグ上位7名が昇格
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up icon昇格ゾーンleaderboard Arrow Up icon

あらゆる学び方に対応

読む・聴く・自分を試す・AIに聞く・学んだことを調べる。どんな学び方にも対応したレッスンです。

変数の入門
音声

変数は、後でプログラム内で参照できる値を格納する、名前のついた入れ物です。

Pythonでは、名前、イコール記号、格納したい値の順で書くことで作成します。

値は後から変えられます。再代入すると、名前は新しい値を指すようになります。

1xSarah

修了証を取得

完了したすべてのコースで証明書を獲得しましょう。LinkedInプロフィールや履歴書に追加して、雇用主にプログラミングスキルをアピールしましょう。

Coddy修了証明書
これは以下を証明します山田 太郎が正常に完了しました
python iconPythonの基礎
認証済み
日付2026年1月
LinkedInLinkedInに追加

C++のDSAをCoddyで学ぶ理由

  • 競技プログラミングの言語。競技プログラマーの大半は、その速さとSTLのためにC++を書き、C++はほぼすべてのコーディング面接でも認められています。C++でDSAを学ぶとは、コンテストで使われている言葉を身につけることです。
  • 目に見えるポインタ。C++の連結リストはノードとポインタでできており、AVL木の回転は数回のポインタの付け替え、確保したものはデストラクタが解放します。マシンが格納するとおりに構造を学び、そのあとでSTLに任せます。
  • ビット演算を、本来の言語で。このパスのビット演算コースはC++で教えているので、ここでは回り道になりません。マスク、シフト、ビットのテクニックを、すでに書いている言語のまま学べます。C++でないのは動的計画法とPython面接シリーズだけで、どちらもPythonで教えるため、ステップのあとに載せています。
  • 面接と同じ形で採点。どのレッスンもテストケースで確認されるC++のチャレンジで終わり、失敗したときはBugsyがあなたのコードを読み、答えを教えずに修正の方向へ導きます。ほとんどのコースで無料の修了証が発行され、それぞれ専用URLで検証できます。

C++でのDSA学習についてよくある質問

C++はデータ構造とアルゴリズムの学習に向いていますか?

競技プログラミングでは最も一般的な選択で、面接でも有力な選択です。速く、必要な構造のほぼすべてを標準ライブラリがカバーしています。その代償は、コードが長くなり、ダングリングポインタから無効化されたイテレータまで、間違える余地が増えることです。このパスのように、まず自分で構造を作ることで、それらに驚かされなくなります。

STLのどのコンテナが、どのデータ構造にあたりますか?

std::vectorは動的配列、std::stackとstd::queueはデフォルトでstd::dequeの上に作られたアダプタ、std::listは双方向連結リスト、std::unordered_mapとstd::unordered_setはハッシュテーブル、std::priority_queueは二分ヒープ(PythonやJavaと違い、デフォルトは最大ヒープ)、std::mapとstd::setは平衡二分探索木で、実際には赤黒木です。トライ木やグラフのコンテナはないので、それらは自分で書きます。

データ構造は自分で実装すべきですか?それともSTLを使えば十分ですか?

両方です。この順番で。各構造を一度は実装して、std::unordered_mapの検索がなぜ平均で定数時間なのか、std::mapがなぜキーをソート済みに保つのかを理解し、そのあとはどこでもSTLを使いましょう。コンテストでも面接でも、手書きの赤黒木を期待する人はいません。求められるのは、正しいコンテナを選び、そのコストを知っていることです。

DSAにはC++とPythonのどちらがよいですか?

競技プログラミングをするつもりか、C++が求められる面接を受けるならC++。アイデアから動くコードまでの最短距離を求めるならPythonです。アルゴリズムはまったく同じなので、一方で学び、もう一方で競技に出る人も多くいます。このパスのデータ構造コースは、すべて両方の言語で教えています。

このパスで、C++で教えていないコースはどれですか?

2つです。動的計画法とPython面接シリーズで、どちらもPythonで教えています。これらはステップのあとに載せていて、リンクはコースをPythonで開きます。考え方はそのまま通用し、C++ならメモ化テーブルはstd::vectorかstd::unordered_mapになります。

このパスを始める前に、C++を知っている必要がありますか?

少なくとも、クラス、ポインタ、参照、std::vectorは必要です。初めて見るものがあれば、まずCoddyのC++コースが無料でそれらを扱います。このパスは、そのコースが終わるところから始まります。

他の学習パス

同じコースを別の職種向けに並べたものです。進捗は引き継がれ、あるパスで修了したコースは、それを含むすべてのパスで修了扱いになります。

すべての学習パス
Coddyのプログラミング言語のイラスト

データ構造とアルゴリズムパスを無料で始める

学習を始める