title
C++
date
2021-06-01 04:51:44 -0700
icon
icon-cpp
background
bg-blue-800
tags
categories
intro
C++ quick reference cheat sheet that provides basic syntax and methods.
Getting started {.cols-3}
#include < iostream>
int main () {
std::cout << " Hello QuickRef\n " ;
return 0 ;
}
Compiling and running
$ g++ hello.cpp -o hello
$ ./hello
Hello QuickRef
int number = 5 ; // Integer
float f = 0.95 ; // Floating number
double PI = 3.14159 ; // Floating number
char yes = ' Y' ; // Character
std::string s = " ME" ; // String (text)
bool isRight = true ; // Boolean
// Constants
const float RATE = 0.8 ;
int age {25 }; // Since C++11
std::cout << age; // Print 25
Data Type
Size
Range
int
4 bytes
-2^31^ ^to^ 2^31^-1
float
4 bytes
N/A
double
8 bytes
N/A
char
1 byte
-128 ^to^ 127
bool
1 byte
true / false
void
N/A
N/A
wchar_t
2 ^or^ 4 bytes
1 wide character
{.show-header}
int num;
std::cout << " Type a number: " ;
std::cin >> num;
std::cout << " You entered " << num;
int a = 5 , b = 10 , temp;
temp = a;
a = b;
b = temp;
// Outputs: a=10, b=5
std::cout << " a=" << a << " , b=" << b;
Comments
// A single one line comment in C++
/* This is a multiple line comment
in C++ */
if (a == 10 ) {
// do something
}
See: Conditionals
for (int i = 0 ; i < 10 ; i++) {
std::cout << i << " \n " ;
}
See: Loops
#include < iostream>
void hello (); // Declaring
int main () { // main function
hello (); // Calling
}
void hello () { // Defining
std::cout << " Hello QuickRef!\n " ;
}
See: Functions
int i = 1 ;
int & ri = i; // ri is a reference to i
ri = 2 ; // i is now changed to 2
std::cout << " i=" << i;
i = 3 ; // i is now changed to 3
std::cout << " ri=" << ri;
ri and i refer to the same memory location.
#include < iostream>
namespace ns1 {int val (){return 5 ;}}
int main ()
{
std::cout << ns1::val ();
}
#include < iostream>
namespace ns1 {int val (){return 5 ;}}
using namespace ns1 ;
using namespace std ;
int main ()
{
cout << val ();
}
Namespaces allow global identifiers under a name
int marks[3 ]; // Declaration
marks[0 ] = 92 ;
marks[1 ] = 97 ;
marks[2 ] = 98 ;
// Declare and initialize
int marks[3 ] = {92 , 97 , 98 };
int marks[] = {92 , 97 , 98 };
// With empty members
int marks[3 ] = {92 , 97 };
std::cout << marks[2 ]; // Outputs: 0
┌─────┬─────┬─────┬─────┬─────┬─────┐
| 92 | 97 | 98 | 99 | 98 | 94 |
└─────┴─────┴─────┴─────┴─────┴─────┘
0 1 2 3 4 5
int marks[6 ] = {92 , 97 , 98 , 99 , 98 , 94 };
// Print first element
std::cout << marks[0 ];
// Change 2th element to 99
marks[1 ] = 99 ;
// Take input from the user
std::cin >> marks[2 ];
char ref[5 ] = {' R' , ' e' , ' f' };
// Range based for loop
for (const int &n : ref) {
std::cout << std::string (1 , n);
}
// Traditional for loop
for (int i = 0 ; i < sizeof (ref); ++i) {
std::cout << ref[i];
}
j0 j1 j2 j3 j4 j5
┌────┬────┬────┬────┬────┬────┐
i0 | 1 | 2 | 3 | 4 | 5 | 6 |
├────┼────┼────┼────┼────┼────┤
i1 | 6 | 5 | 4 | 3 | 2 | 1 |
└────┴────┴────┴────┴────┴────┘
int x[2 ][6 ] = {
{1 ,2 ,3 ,4 ,5 ,6 }, {6 ,5 ,4 ,3 ,2 ,1 }
};
for (int i = 0 ; i < 2 ; ++i) {
for (int j = 0 ; j < 6 ; ++j) {
std::cout << x[i][j] << " " ;
}
}
// Outputs: 1 2 3 4 5 6 6 5 4 3 2 1
C++ Conditionals {.cols-3}
if (a == 10 ) {
// do something
}
int number = 16 ;
if (number % 2 == 0 )
{
std::cout << " even" ;
}
else
{
std::cout << " odd" ;
}
// Outputs: even
int score = 99 ;
if (score == 100 ) {
std::cout << " Superb" ;
}
else if (score >= 90 ) {
std::cout << " Excellent" ;
}
else if (score >= 80 ) {
std::cout << " Very Good" ;
}
else if (score >= 70 ) {
std::cout << " Good" ;
}
else if (score >= 60 )
std::cout << " OK" ;
else
std::cout << " What?" ;
a == b
a is equal to b
a != b
a is NOT equal to b
a < b
a is less than b
a > b
a is greater b
a <= b
a is less than or equal to b
a >= b
a is greater or equal to b
Example
Equivalent to
a += b
Aka a = a + b
a -= b
Aka a = a - b
a *= b
Aka a = a * b
a /= b
Aka a = a / b
a %= b
Aka a = a % b
Example
Meaning
exp1 && exp2
Both are true (AND)
`exp1
!exp
exp is false (NOT)
Operator
Description
a & b
Binary AND
`a
b`
a ^ b
Binary XOR
a ~ b
Binary One's Complement
a << b
Binary Shift Left
a >> b
Binary Shift Right
┌── True ──┐
Result = Condition ? Exp1 : Exp2;
└───── False ─────┘
int x = 3 , y = 5 , max;
max = (x > y) ? x : y;
// Outputs: 5
std::cout << max << std::endl;
int x = 3 , y = 5 , max;
if (x > y) {
max = x;
} else {
max = y;
}
// Outputs: 5
std::cout << max << std::endl;
int num = 2 ;
switch (num) {
case 0 :
std::cout << " Zero" ;
break ;
case 1 :
std::cout << " One" ;
break ;
case 2 :
std::cout << " Two" ;
break ;
case 3 :
std::cout << " Three" ;
break ;
default :
std::cout << " What?" ;
break ;
}
int i = 0 ;
while (i < 6 ) {
std::cout << i++;
}
// Outputs: 012345
int i = 1 ;
do {
std::cout << i++;
} while (i <= 5 );
// Outputs: 12345
for (int i = 0 ; i < 10 ; i++) {
if (i % 2 == 0 ) {
continue ;
}
std::cout << i;
} // Outputs: 13579
while (true ) { // true or 1
std::cout << " infinite loop" ;
}
for (;;) {
std::cout << " infinite loop" ;
}
for (int i = 1 ; i > 0 ; i++) {
std::cout << " infinite loop" ;
}
#include < iostream>
void print (int num)
{
std::cout << num << std::endl;
}
int main ()
{
int arr[4 ] = {1 , 2 , 3 , 4 };
std::for_each (arr, arr + 4 , print);
return 0 ;
}
Range-based (Since C++11)
int num_array[] = {1 , 2 , 3 , 4 , 5 };
for (int n : num_array) {
std::cout << n << " " ;
}
// Outputs: 1 2 3 4 5
std::string hello = " QuickRef.ME" ;
for (char c: hello)
{
std::cout << c << " " ;
}
// Outputs: Q u i c k R e f . M E
int password, times = 0 ;
while (password != 1234 ) {
if (times++ >= 3 ) {
std::cout << " Locked!\n " ;
break ;
}
std::cout << " Password: " ;
std::cin >> password; // input
}
for (int i = 0 , j = 2 ; i < 3 ; i++, j--){
std::cout << " i=" << i << " ," ;
std::cout << " j=" << j << " ;" ;
}
// Outputs: i=0,j=2;i=1,j=1;i=2,j=0;
#include < iostream>
int add (int a, int b) {
return a + b;
}
int main () {
std::cout << add (10 , 20 );
}
add is a function taking 2 ints and returning int
void fun (string a, string b) {
std::cout << a + " " + b;
}
void fun (string a) {
std::cout << a;
}
void fun (int a) {
std::cout << a;
}
#include < iostream>
#include < cmath> // import library
int main () {
// sqrt() is from cmath
std::cout << sqrt (9 );
}
C++ Classes & Objects {.cols-3}
C++ Preprocessor {.cols-3}
Preprocessor {.row-span-3}
#include " iostream"
#include < iostream>
#define FOO
#define FOO " hello"
#undef FOO
#ifdef DEBUG
console.log(' hi' );
#elif defined VERBOSE
...
#else
...
#endif
#if VERSION == 2.0
#error Unsupported
#warning Not really supported
#endif
#define DEG (x ) ((x) * 57.29 )
#define DST (name ) name##_s name##_t
DST (object); #=> object_s object_t ;
#define STR (name ) #name
char * a = STR(object); #=> char * a = " object" ;
#define LOG (msg ) console.log(__FILE__, __LINE__, msg)
#=> console.log(" file.txt" , 3 , " hey" )
Escape Sequences
Characters
\b
Backspace
\f
Form feed
\n
Newline
\r
Return
\t
Horizontal tab
\v
Vertical tab
\\
Backslash
\'
Single quotation mark
\"
Double quotation mark
\?
Question mark
\0
Null Character
Keywords {.col-span-2 .row-span-2}