Rico's Nerd Cluster

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

C++ - Numeric

NaN

std::numeric NaN: (C++11) std::numeric_limits<float>::quiet_NaN(): propagates through arithmetic operations without triggering floating-point exceptions. 1 2 3 4 5 6 7 8 9 10 11 12 flo...

C++ - , Functions

minmax_element, min_element, reduce, transform, numeric

Introduction In this article, we will explore two important STL libraries, <algorithm>, <numeric>. In <algorithm>, we have: Partitioning algorithms: Placing the n...

C++ - Sizing and Type Conversion

Memory Alignment, Sizeof, Integral Promotion

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++ - Compiler Directives

Macros, Pragmas, Attributes

Introduction Compiler directives are instructions that are not part of C++ / C standards, but tell the compiler how to compile the code. They starts with # (pronounced as “hash”), and are handled ...

C++ - Lvalue and Rvalue Reference

Reference Lifetime

Reference Lifetime const lvalue reference Simply Extends the Lifetime of A Temp. No copy constructor is called when the temp object is passed in const lvalue reference as a class attribute DO...

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...