Hash Tables

We missed hash table in C++ for a long time. They promise to have constant access time. C++11 has hash tables in four variations. The official name is unordered associative containers. Unofficially, they are called dictionaries or just simple associative arrays. 

Read more
Views: 66106

Type-Traits: Performance Matters

If you look carefully, you see, type-traits have a big optimization potential. The type-traits support in the first step to analyse the code at the compile time and in the second step, to optimize the code based on that analysis. How is that possible? Dependent on the type of a variable a faster variant of an algorithm will be chosen.

Read more
Views: 11974

constexpr Functions

constexpr functions are functions that can be executed at compile time. Sounds not so thrilling. But it is. Trust me. You can perform with constexpr functions a lot of calculations at compile time. Therefore, the result of the calculation is at runtime as a constant in ROM available. In addition, constexpr functions are implicit inline.

Read more
Tags: constexpr
Views: 43960

constexpr - Variables and Objects

If you declare a variable as constexpr the compiler will evaluate them at compile time. This holds not only true for built-in types but also for instantiations of user-defined types. There are a few serious restrictions for objects in order to evaluate them at compile time.

 

Read more
Tags: constexpr
Views: 22288

Constant Expressions with constexpr

You can define with the keyword constexpr an expression that can be evaluated at compile time. constexpr can be used for variables, functions, and user-defined types. An expression that is evaluated at compile time has a lot of advantages. For example constexpr variables and instances of user-defined types are automatically thread-safe and can be stored in ROM; constexpr functions that are evaluated at compile time, are totally done with their work at run time.

Read more
Tags: constexpr
Views: 10353

inline

Thanks to inline the compiler can replace the function call by the function body. There are two reasons to use inline functions: performance and safety.

Read more
Tags: inline
Views: 12879

The Null Pointer Constant nullptr

The new null pointer nullptr cleans up in C++ with the ambiguity of the number 0 and the macro NULL.

Read more
Tags: nullptr
Views: 24829

override and final

By using the context sensitive keyword override and final you can explicit manage the overriding of virtual functions. In particular, the keyword override solves a lot of issues with difficult to finding bugs in object hierarchies: Methods that should override methods of base classes. The result is a syntactically but not semantically correct program. The program performs the wrong stuff in the right way.

Read more
Views: 45484

Strongly-Typed Enums

Enumerations are a convenient way to define integer constants with names. This integer constants are called enumerators. Sadly, classical enums have a few drawbacks.

Read more
Tags: enum
Views: 33407

Raw and Cooked

C++11 has user-defined literals for characters, C strings, integers and floating point numbers. For integers and floating point numbers they are available in raw and cooked form. Thanks to C++14 we have built-in literals for binary numbers, C++ strings, complex numbers, and time units.

Read more
Views: 12834

My Newest E-Books

Course: Modern C++ Concurrency in Practice

Course: C++ Standard Library including C++14 & C++17

Course: Embedded Programming with Modern C++

Course: Generic Programming (Templates)

Course: C++ Fundamentals for Professionals

Subscribe to the newsletter (+ pdf bundle)

Blog archive

Source Code

Visitors

Today 2895

All 4181702

Currently are 145 guests and no members online

Kubik-Rubik Joomla! Extensions

Latest comments