C++オンラインコンパイラ&デバッガー

サーバーモードのGDBでブレークポイント、変数確認、ステップ実行を使ってC++をデバッグできます。

🚀 2,392,381 合計実行 (7 今月)
出力

C++のコーディングチャレンジで練習

このエディタで実践的な問題を解こう。サンプルテストを実行し、提出してAIコードレビューを受けられます。

すべてのC++チャレンジ
簡単

Average of Three

Average three whole numbers.

学べること 算術除算
BeginnerLearning-pathVariables
簡単

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

学べること 算術戻り値
BeginnerLearning-pathVariables
中級

遺伝的アルゴリズムの 1 世代

トーナメント選択、一点交叉、突然変異でビット列の次の世代を作ります。

学べること 遺伝的アルゴリズム進化的探索
OptimizationSimulationai
まだ解答がありません
簡単

ε-greedy による多腕バンディット

ε-greedy な行動選択で、多腕バンディットの探索と活用のバランスを取ります。

学べること 探索と活用バンディット
強化学習ai機械学習
まだ解答がありません
簡単

マルコフ連鎖の状態分布

マルコフ連鎖の遷移行列を使って、確率分布を指定したステップ数だけ伝播させます。

学べること マルコフ連鎖確率
Simulationaimath
まだ解答がありません
中級

価値反復法

ベルマン最適方程式による更新を繰り返し、マルコフ決定過程の各状態の価値を計算します。

学べること ベルマン方程式マルコフ決定過程
強化学習ai機械学習
まだ解答がありません
中級

Q 学習の更新

経験の列に Q 学習の更新を適用し、報酬が前の状態へさかのぼって伝わる様子を見ます。

学べること Q 学習割引報酬
強化学習ai機械学習
まだ解答がありません
中級

アルファベータ枝刈り

アルファベータ枝刈り付きのミニマックスでゲーム木を評価し、実際に調べた葉の数を数えます。

学べること アルファベータ枝刈りゲーム探索
RecursionTreesai
まだ解答がありません
中級

ミニマックスで三目並べ

ミニマックスでゲーム木全体を探索し、三目並べの完璧な一手を選びます。

学べること ミニマックスゲーム木
Recursionai
まだ解答がありません
中級

重み付きグリッド上の A* 探索

ゲームやロボットの経路探索を支える A* で、地形コストのグリッドを横切る最安の経路を求めます。

学べること A* 探索ヒューリスティック
GraphsGridsShortest-pathai
まだ解答がありません
中級

温度と Top-K によるサンプリング

言語モデルと同じように、上位 k 個のロジットを残し、温度を適用してから次のトークンをサンプリングします。

学べること テキスト生成サンプリング
ai機械学習
まだ解答がありません
難しい

マルチヘッド・セルフアテンション

入力をクエリ、キー、値に射影し、複数のヘッドで並列にアテンションを計算して結合します。

学べること マルチヘッドアテンション行列による射影
ai機械学習
まだ解答がありません

トピックから探す

実践コード、出力、メモリモデル、データ構造、アルゴリズム、モダンC++を通してCとC++を比較しながら学びます。

C/C++サンプル →

💻 このC++オンライン実行ツールについて

CodeUtility C++ Executor を使えば、ブラウザ上で直接C++コードを書いて実行できます — インストールやコンパイラ設定は一切不要です。安全なサンドボックスで動作し、 C++11、C++14、C++17から最新バージョンまでの実際のC++標準に対応しています。

このツールはクラウド上で動作する本物のC++コンパイラでコードをコンパイル・実行し、 バージョン間で正確かつ一貫した挙動を保証します。変数、関数、ループ、条件分岐、 オブジェクト指向といったC++の基本概念を自由に試せます。

面接の準備、モダンC++の学習、アルゴリズムのロジック検証など、どんな用途でも、 CodeUtility C++ Executor は、どのデバイスからでもすぐにコードを実行できるシンプルかつ強力な環境を提供します。

単なるコードランナーではありません

同じ実行環境で、複数ファイル対応エディター、分離された実行ターミナル、ランタイム別ライブラリ、永続ワークスペース、共有、リアルタイム共同作業を利用できます。

この実行環境の使い方

ランタイムを選択し、ファイルを開くか作成してコードを記述し、[実行]を選択します。出力はターミナルに表示されます。サインインしたユーザーは、ワークスペースにファイルを保存し、ライブラリをインストールして、共有を通じて共同作業できます。

  1. バージョンを選択して現在のファイルを編集するか、ワークスペース内の別のファイルを開きます。
  2. コードを実行し、求められた場合はターミナルに入力して、保存された実行履歴を確認します。
  3. 複数のコードスニペットが必要な作業では、ライブラリ、ワークスペースツール、共有、チャットを利用します。

💡 上で試せるC++の基本とサンプル

1. 変数と定数の宣言

C++では、各変数の型を宣言する必要があります。constを使うと、初期化後に変更できない読み取り専用の値を定義できます。

int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;

// 定数
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";

// const を変更しようとするとコンパイル時エラーになります
// MAX_USERS = 200; // ❌ エラー

2. 条件分岐(if / switch)

分岐にはif、else if、elseを使います。複数の値を扱う場合はswitchを使います。

int x = 2;
if (x == 1) {
    std::cout << "1\n";
} else if (x == 2) {
    std::cout << "2\n";
} else {
    std::cout << "その他\n";
}

// switch文
switch (x) {
    case 1:
        std::cout << "1\n";
        break;
    case 2:
        std::cout << "2\n";
        break;
    default:
        std::cout << "その他\n";
}

3. ループ

for、while、do-whileでコードブロックを繰り返します。

for (int i = 0; i < 3; i++) {
    std::cout << i << "\n";
}

int n = 3;
while (n > 0) {
    std::cout << n << "\n";
    n--;
}

4. 配列

配列は同じ型の要素を複数格納します。

int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";

5. 配列/ベクターの操作

動的配列にはstd::vectorを使います。

#include <vector>

std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();

for (int n : nums) {
    std::cout << n << " ";
}

6. コンソール入出力

入力にはstd::cin、出力にはstd::coutを使います。

std::string name;
std::cout << "あなたの名前を入力してください: ";
std::cin >> name;
std::cout << "こんにちは、" << name << "\n";

7. 関数

関数は再利用可能な処理をまとめます。引数と戻り値の型を指定します。

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

std::cout << add(3, 4);

8. マップ

std::map は辞書のようにキーと値のペアを格納します。

#include <map>

std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];

9. 例外処理

try と catch を使って実行時エラーを処理します。

try {
    throw std::runtime_error("エラーが発生しました");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. ファイル入出力

fstream を使ってファイルの読み書きを行います。

#include <fstream>

std::ofstream out("file.txt");
out << "こんにちは、ファイル";
out.close();

std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();

11. 文字列操作

C++の文字列は length()、substr()、find() といったメソッドをサポートしています。

std::string text = "Hello World";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("World");

12. クラスとオブジェクト

C++はクラスを使ったオブジェクト指向プログラミングをサポートしています。

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "こんにちは、私は " << name; }
};

Person p("Alice");
p.greet();

13. ポインタ

ポインタは別の変数のメモリアドレスを保持します。アドレスを取得するには &、 参照外し(そのアドレスの値にアクセス)には * を使います。

int x = 10;
int* ptr = &x;

std::cout << "x の値: " << x << "\n";
std::cout << "x のアドレス: " << ptr << "\n";
std::cout << "ポインタ経由の値: " << *ptr << "\n";

// ポインタ経由で x を変更
*ptr = 20;
std::cout << "更新後の x: " << x << "\n";

🐞 %{language}コードをオンラインでデバッグする方法

オンライン%{language}デバッガーなら、コンパイラやIDEをインストールせずに実行時エラーやロジックエラーを調査できます。サーバーモードはデバッグ情報付きでコンパイルし、GDBで実行します。

  1. 行番号の横にブレークポイントを設定します。
  2. Debugを選択してコンパイルし、最初のブレークポイントで停止します。
  3. 現在行、コールスタック、変数を確認します。
  4. Continue、Step Over、Step Into、Step Outで実行を制御します。
  5. 終了するときはStopを選択します。

再現可能な小さなコードから始め、想定外の動作が起きる直前にブレークポイントを置きましょう。