Rico's Nerd Cluster

「离开世界之前 一切都是过程」

C++ - Casting

Ever tried convincing your boss that your need for vacation is a 'const' by using const_cast? Welcome to C++ casting!

Introduction TODO - coming soon ;) Const Casting ❗ const_cast is needed sometimes to form a pointer/reference to a const object to interface with legacy code. Modifying the char* might lead to u...

C++ - Algorithm Functions

minmax_element, min_element, reduce, transform

std::minmax_element(begin_itr, end_itr, lambda) This function finds the [min, max] of a container based on the definition of “smaller”. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <a...

C++ - Sizing and Type Conversion

Memory Alignment, Sizeof

Memory Alignment C++ struct / class does memory alignment. Here’s an illustrative example: 1 2 3 4 5 struct LocalizationData { float x, y; // Each float is 4 bytes bool r; // bool i...

C++ - Control Flow

switch-case, cpp20 range, DSL

switch-case Like goto, switch-case is a label. Without {}, any variable declared within a switch-case statement has the scope of the entire statement. This will only work with variables that can b...

C++ - Useful Macros

Why do we still need macros for C++? Please click in and take a look!

Introduction Macros are string substitution for code. It happens during the preprocessing phase. It is generally not encouraged in c++ nowadays. However, there are still applications where it coul...

C++ - Operators

Basic Operators

Basic Operators a == b == c doesn’t do what you want. Do (a == b && b == c) instead. It’s equivalent to: 1 2 3 int a = 5, b = 5, c = 5; bool res = a == b; res = res == c;

C++ - Bit Operations

A Mumbo Jumbo List About Bit and Byte Operations

Basic Bitwise operations Setting a specific bit to 1. 1 2 uchar desc_byte = 0; desc_byte |= (1 << NUM);

C++ - Erase Remove

An efficient in-place way to remove elements in a container

Introduction It’s a common task to remove items in a sequential container that fits a criteria, like an array, vector, queue, etc. For this scenario in C++, it’s advised to use the erase-remove id...

C++ - Datatypes

std::optional, structural binding

Optional std::optional can specify if a value is valid or not. It has: .has_value() to examine if it has value .value() to retrieve the value 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1...

C++ - Weird & Interesting Stuff I found

Oh boy, C++ is weird ... but also interesting :)

Strings Raw C strings (char arrays) should always terminate with a null character, ‘\0’. Fun fact about char arrays: nullptr is inserted at the back of the array. This is a convention for argv ...