Online C++ Compiler & Debugger

Write, compile, run, and debug C++ online. Set breakpoints, inspect variables, and step through code with GDB in Server mode—no setup required.

🚀 2,392,395 total executions (21 this month)
Output

Practice C++ with coding challenges

Solve hands-on problems right in this editor: run the sample tests, submit, and get an AI code review.

All C++ challenges
Easy

Average of Three

Average three whole numbers.

You'll learn ArithmeticDivision
BeginnerLearning-pathVariables
Easy

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

You'll learn ArithmeticReturn values
BeginnerLearning-pathVariables
Medium

One Generation of a Genetic Algorithm

Breed the next generation of bit strings with tournament selection, single-point crossover and mutation.

You'll learn Genetic algorithmsEvolutionary search
OptimizationSimulationai
No solutions yet
Easy

Epsilon-Greedy Multi-Armed Bandit

Balance exploration and exploitation on a multi-armed bandit with epsilon-greedy action selection.

You'll learn Explore vs exploitBandits
Reinforcement learningaimachine learning
No solutions yet
Easy

Markov Chain State Distribution

Propagate a probability distribution through a Markov chain's transition matrix for a number of steps.

You'll learn Markov chainsProbability
Simulationaimath
No solutions yet
Medium

Value Iteration

Compute how valuable each state of a Markov decision process is by repeatedly applying the Bellman optimality update.

You'll learn Bellman equationMDPs
Reinforcement learningaimachine learning
No solutions yet
Medium

Q-Learning Updates

Apply the Q-learning update to a stream of experiences and watch rewards flow back to earlier states.

You'll learn Q-learningDiscounted rewards
Reinforcement learningaimachine learning
No solutions yet
Medium

Alpha-Beta Pruning

Evaluate a game tree with minimax and alpha-beta pruning, and count how many leaves the search really looks at.

You'll learn Alpha-beta pruningGame search
RecursionTreesai
No solutions yet
Medium

Minimax Tic-Tac-Toe

Pick the perfect tic-tac-toe move by searching the whole game tree with minimax.

You'll learn MinimaxGame trees
Recursionai
No solutions yet
Medium

A* Search on a Weighted Grid

Find the cheapest path across a grid of terrain costs with A*, the search algorithm behind game and robot pathfinding.

You'll learn A* searchHeuristics
GraphsGridsShortest-pathai
No solutions yet
Medium

Temperature and Top-K Sampling

Choose the next token like a language model does: keep the top k logits, apply temperature, and sample.

You'll learn Text generationSampling
aimachine learning
No solutions yet
Hard

Multi-Head Self-Attention

Project the input into queries, keys and values, run attention in several heads in parallel, and combine them.

You'll learn Multi-head attentionMatrix projections
aimachine learning
No solutions yet

Explore by topic

Learn C and C++ together through practical comparisons, runnable code, output, memory models, data structures, algorithms, and modern C++ features.

C/C++ Examples →

💻 About This C++ Online Executor

The CodeUtility C++ Executor lets you write and run C++ code directly in your browser - no installation or compiler setup needed. It’s powered by a secure sandbox that supports real C++ standards from C++11, C++14, C++17, up to the latest version.

This tool uses a real C++ compiler running in the cloud to compile and execute your code, ensuring accurate and consistent behavior across versions. You can freely experiment with core C++ concepts like variables, functions, loops, conditionals, and object-oriented programming.

Whether you’re preparing for interviews, learning modern C++ features, or verifying algorithm logic, the CodeUtility C++ Executor provides a simple yet powerful environment to run code instantly from any device.

More than a code runner

Use a multi-file editor, an isolated execution terminal, runtime-specific libraries, persistent workspaces, sharing, and real-time collaboration from the same executor.

How to use this executor?

Choose a runtime, open or create a file, write your code, and select Run. Output appears in the terminal, while signed-in users can keep files in a workspace, install libraries, and collaborate through shares.

  1. Select a version and edit the current file or open another workspace file.
  2. Run the code, provide input in the terminal when requested, and review saved run history.
  3. Use libraries, workspace tools, sharing, and chat when your task needs more than one snippet.

💡 C++ Basics & Examples You Can Try Above

1. Declaring Variables and Constants

C++ requires you to declare the type of each variable. Use const to define read-only values that cannot be changed after initialization.

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

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

// Attempting to modify a const will cause a compile-time error
// MAX_USERS = 200; // ❌ error

2. Conditionals (if / switch)

Use if, else if, else for branching. Use switch for multiple values.

int x = 2;
if (x == 1) {
    std::cout << "One\n";
} else if (x == 2) {
    std::cout << "Two\n";
} else {
    std::cout << "Other\n";
}

// Switch-case
switch (x) {
    case 1:
        std::cout << "One\n";
        break;
    case 2:
        std::cout << "Two\n";
        break;
    default:
        std::cout << "Other\n";
}

3. Loops

Use for, while, and do-while to repeat code blocks.

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

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

4. Arrays

Arrays store multiple elements of the same type.

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

5. Array/Vector Manipulation

Use std::vector for dynamic arrays.

#include <vector>

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

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

6. Console Input/Output

Use std::cin for input and std::cout for output.

std::string name;
std::cout << "Enter your name: ";
std::cin >> name;
std::cout << "Hello, " << name << "\n";

7. Functions

Functions group reusable logic. Use parameters and return types.

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

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

8. Maps

std::map stores key-value pairs like dictionaries.

#include <map>

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

9. Exception Handling

Use try and catch to handle runtime errors.

try {
    throw std::runtime_error("Error occurred");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. File I/O

Use fstream to read from and write to files.

#include <fstream>

std::ofstream out("file.txt");
out << "Hello File";
out.close();

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

11. String Manipulation

C++ strings support methods like length(), substr(), and find().

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

12. Classes & Objects

C++ supports object-oriented programming using classes.

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "Hi, I'm " << name; }
};

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

13. Pointers

A pointer stores the memory address of another variable. Use & to get an address, and * to dereference (access the value at the address).

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

std::cout << "Value of x: " << x << "\n";
std::cout << "Address of x: " << ptr << "\n";
std::cout << "Value from pointer: " << *ptr << "\n";

// Modify x through pointer
*ptr = 20;
std::cout << "Updated x: " << x << "\n";

🐞 How to Debug %{language} Code Online

Use the online %{language} debugger to find runtime and logic errors without installing a compiler or desktop IDE. Server mode compiles with debug symbols and runs the program under GDB.

  1. Set one or more breakpoints beside the line numbers.
  2. Select Debug to compile and pause at the first matching breakpoint.
  3. Inspect the current line, call stack, and variables.
  4. Use Continue, Step Over, Step Into, or Step Out to control execution.
  5. Select Stop to end the debugging session.

Start with a small reproducible example and place a breakpoint just before the value or control flow becomes unexpected.