- Executors
-
Learn
Learn Python Runnable examples, NumPy, pandas, and more Learn AINeural networks, ML and LLMs from scratch Learn C & C++ Pointers, memory, STL, and modern C++ Learn C#C# basics, OOP, LINQ, async, and .NET exercises Python Algorithms Search, sorting, recursion, and visualizers O(n) C & C++ Algorithms Compare algorithms implemented in C and C++
- ChallengesNew
In C++, RAII ties a resource to an object's lifetime: the resource is released automatically when the object goes out of scope. Objects in the same scope are destroyed in reverse order of creation.
Process the events in order:
{: enter a new inner scope.}: leave the current scope; every resource acquired in it is released, newest first.acquire <name>: create a resource in the current scope.
When the events run out, the remaining open scopes end from the innermost to the outermost (the program's outer scope included), releasing their resources the same way.
Implement raii_release_order(events).
Input
events: The events. Braces are balanced or left open, never closed without being opened.
Output
Return the resource names in the order they are released.
Constraints
0 ≤ number of events ≤ 100,000
Names have 1 to 20 characters without spaces
Examples
Example 1
Input:
events = ["acquire db", "{", "acquire file", "acquire lock", "}", "acquire log"]
Expected output:
["lock", "file", "log", "db"]
Explanation
Leaving the inner scope releases lock then file (newest first). At the end the outer scope releases log then db: ["lock", "file", "log", "db"].
Example 2
Input:
events = ["{", "acquire a", "{", "acquire b"]
Expected output:
["b", "a"]
Explanation
Two scopes are still open at the end: the innermost releases b, then the next releases a: ["b", "a"].
References
-
Example 1 Not runInput:
events = ["acquire db", "{", "acquire file", "acquire lock", "}", "acquire log"]Expected output:["lock", "file", "log", "db"]Your output -
Example 2 Not runInput:
events = ["{", "acquire a", "{", "acquire b"]Expected output:["b", "a"]Your output
4 hidden tests also run when you submit.
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,393,970 total executions (1,596 this month)
Practice C++ with coding challenges
Solve hands-on problems right in this editor: run the sample tests, submit, and get an AI code review.
Learn and practise C/C++
Follow a learning path with runnable lessons, then test yourself with coding challenges.
💻 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.
- Select a version and edit the current file or open another workspace file.
- Run the code, provide input in the terminal when requested, and review saved run history.
- 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.
- Set one or more breakpoints beside the line numbers.
- Select Debug to compile and pause at the first matching breakpoint.
- Inspect the current line, call stack, and variables.
- Use Continue, Step Over, Step Into, or Step Out to control execution.
- 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.