Menu
Coddy logo textTech
学習パス

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

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

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

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

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

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

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

  1. 1
    このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをC++のクラスとポインタでゼロから実装し、実際に問題を解くのに使います。これを終えると、std::stackstd::queuestd::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
使える機能
コーディングを学ぶために使うすべて

Learn by Doing

Write real code, query databases, build websites, and master AI prompts. Our interactive lessons cover every skill modern developers need.

playground.js
Code Editor
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Build Your Coding Streak

Stay consistent and watch your progress grow! Track your daily coding habit, protect your streak with freeze days, and earn rewards for showing up every day.

12 days streak

Return tomorrow to keep your streak!

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

Double or Nothing

Day 5 of 7

fire Freeze icon

Streak Freeze

2 left

Code Anywhere, Anytime

Take your coding journey on the go! No setup, no downloads - just open and start coding. Available on iOS, Android and Web with 4.9 star ratings.

Python
7Streak
250Score
5Energy
Variables
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
CONTINUE
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
Journey
Goals
Leaderboard
Profile
4.9
StarStarStarStarStar
Rating

You're Not Alone in This

Compete on global leaderboards, invite friends to earn rewards, and celebrate each other's wins. Coding is better with friends!

Challenger League
Challenger LeagueTop 7 advance
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 iconPromotion zoneleaderboard Arrow Up icon

Every way to learn

Read, listen, test yourself, ask the AI, or look up anything you've already covered. Every lesson meets you where you are.

Intro to Variables
Audio

A variable is a named container that stores a value you can reference later in your program.

In Python, you create one by writing the name, an equals sign, then the value you want to store.

The value can change over time - reassigning the name simply points it to a new value.

1xSarah

Prove Your Skills

Earn certificates for every course you complete. Add them to your LinkedIn profile and resume to showcase your coding expertise to employers.

CoddyCertificate of Completion
This certifies thatJohn Doehas successfully completed
python iconPython Fundamentals
Verified
DateJan 2026
LinkedInAdd to LinkedIn

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

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

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

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

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

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

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

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

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

他の学習パス

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

すべての学習パス
Coddy programming languages illustration

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

学習を始める