C++11C++14C++17Learn C++

The Main Function of a C++ Program

The source code written in C++ must be compiled (i.e. translated to the machine code) by one or another compiler such as Embarcadero RAD Studio C++ compilers before in can be runned. In general, there are two types of the resulting machine code: library and main executable (hereinafter simply executable). This post will briefly cover the later of these two. When an executable produced from a…
Read more
C++11C++14C++17Learn C++

Switch Statement in Modern C++

The C++ language provides the switch statement which can be used to replace the set of if statements (see If Statements in Modern C++). First of all, let’s define the enum type Traffic_light_color as follows: enum class Traffic_light_color { red, yellow, green }; Then, the following snippet: // Snippet 1 #include #include std::string_view to_string(const Traffic_light_color…
Read more
C++C++11C++14C++17Generic ProgrammingIteratorsLearn C++

Helpers for Generic C++ Code Iterating Over Sequences

The iterator library that is part of the C++ Standard Library provides the following helpers for writing generic code: #include // helpers are defined here template void foo(Container& c) { // Generic way to obtain (constant) iterators auto b = std::begin(c); // (1) auto cb = std::cbegin(c); // (2) auto e = std::end(c); // (3) auto ce = std::cend(c); // (4) …
Read more
C++C++11C++14C++17Iterators

The Move Iterator Adapter in C++

The dereference prefix operator * being applied to iterator returns the lvalue reference to the element pointed by the iterator. Therefore, algorithms such as std::copy or std::transform calls copying constructors of processed elements, for example: #include #include #include #include auto deep_copy_to_list(const std::vector& src) { std::list dst(src.size()); // allocate the memory to…
Read more