メインコンテンツまでスキップ

C++

C++は、C言語の考え方を土台に、クラスやテンプレートなどの機能を加えた高性能な言語です。ゲームエンジン、3D処理、競技プログラミング、組み込み、高速なシステム開発で使われます。

何ができる?

  • 高速なプログラムを書く
  • 3Dゲームやゲームエンジンを作る
  • 競技プログラミングで効率的に解く
  • 画像処理やシミュレーションを作る
  • C言語に近い低レイヤーも扱う

学習ゴール

  • C++の基本構造を読める
  • 変数、条件分岐、繰り返し、関数を書ける
  • vectorstring などSTLを使える
  • クラスの基本を理解できる
  • C++が難しい理由と強みを説明できる

開発環境の準備

方法向いている人
オンライン実行環境文法を試したい人
GCC / Clangローカルで学びたい人
Visual StudioWindowsでC++開発したい人
Unreal Engine本格的なゲーム開発をしたい人

競技プログラミングでは、オンラインジャッジの実行環境に合わせてC++の標準バージョンを確認します。

基本構造

#include <iostream>

int main() {
std::cout << "こんにちは、C++" << std::endl;
return 0;
}

std::cout は画面に文字を表示するために使います。

変数と条件分岐

int score = 85;

if (score >= 80) {
std::cout << "よくできました" << std::endl;
} else {
std::cout << "もう少し練習しよう" << std::endl;
}

vector

vector は、数が変わるデータの並びを扱いやすくする仕組みです。

#include <iostream>
#include <vector>

int main() {
std::vector<int> scores = {80, 95, 72};

for (int score : scores) {
std::cout << score << std::endl;
}
}

関数

int add(int a, int b) {
return a + b;
}

型を明確に書くことで、何を受け取り何を返すかが分かりやすくなります。

クラス

#include <string>

class Player {
public:
std::string name;
int hp;

Player(std::string playerName, int playerHp) {
name = playerName;
hp = playerHp;
}
};

ゲームでは、プレイヤー、敵、アイテムなどをクラスとして表せます。

STL

STLは、C++でよく使う便利な部品の集まりです。

技術役割
vector可変長の配列
string文字列
mapキーと値のペア
set重複しない集合
queue先入れ先出し
priority_queue優先度付きキュー

関連技術

技術できること
Unreal Engine高品質な3Dゲーム開発
CMakeC++プロジェクトのビルド管理
OpenCV画像処理
AtCoder競技プログラミング
Rust安全性を重視した代替候補

ミニ演習: 最大値を探す

#include <iostream>
#include <vector>

int main() {
std::vector<int> scores = {80, 95, 72, 88};
int maxScore = scores[0];

for (int score : scores) {
if (score > maxScore) {
maxScore = score;
}
}

std::cout << maxScore << std::endl;
}

最小値や平均点も求めてみましょう。

よくあるエラーと直し方

困ったこと原因の例確認すること
コンパイルできない;#include 忘れエラー行の前後
std のエラー名前空間の指定不足std::using
配列で落ちる範囲外アクセス添字の範囲
型が合わない期待する型と違う関数の引数
実行が遅いアルゴリズムが重い計算量

チェックリスト

  • iostream を使って出力できる
  • iffor を使える
  • vector を使える
  • 関数を作れる
  • クラスの基本を読める
  • STLの代表的な部品を知っている

次に学ぶこと

競技プログラミングに進むならデータ構造とアルゴリズム、ゲーム開発に進むならUnreal Engine、低レイヤーの安全性に興味があるならRustを学びましょう。