Last Update:
Conversions, Searchers and C++17 In Detail Updates
Table of Contents
I’m happy to announce that last Friday I updated the book! “C++17 In Detail” grew by 31 pages (up to 250), includes two new chapters and lots of “bug” fixes and better explanations.
See what’s inside.
The Changes
Here’s the short version of the release notes:
– New chapter - String Conversions
– New chapter - Searchers & String Matching
– An updated chapter about Parallel Algorithms Chapter, perf results,
better explanations
– Added notes about gcd
, lcm
, clamp
in the Other STL Changes
Chapter
– Better explanations in many chapters like Variant, string_view
,
General Language
– Typos, Grammar, formatting issues
Here’s the link to the book:
New Chapters
To prepare the new chapters I started doing some experiments with new searchers objects and conversions in August and September.
You can find some of my notes:
Speeding up Pattern Searches with Boyer-Moore Algorithm from
C++17
and
Preprocessing Phase for C++17’s
Searchers
Two weeks ago I also did a presentation for my local C++ user group in
Cracow:
Let’s talk about string operations in C++17 |
Meetup
The new low-level conversion routines (from_chars
, to_chars
) offers
excellent performance and should help with improving number parsing in
your projects. They are quite crude and even looks C-style, but on the
other hand, they are flexible and returns a lot of information about the
conversion process. The whole processing is done without any memory
allocation, throwing exceptions, locale support or format string…
In the book, I’ve even done a benchmark to see what you can expect from the new functions. I created an application that performs a round-trip: converting from a vector of integers, into a vector of strings and then back to another vector of integers.
const vector<int> inputVector = GenerateRandomVector();
const vector<string> strVector = ConverToStrings(inputVector);
const vector<int> outputVector = ConverToNumbers(strVector);
Compare(inputVector, outputVector);
Usually, the new conversion routines performed 2x…5x faster than
functions like itoa
, sprintf
, stoi
. And that happens across all
compilers I’ve used: Clang 7.0, GCC 8.2 and Visual Studio 2017 15.8.
So far GCC and Clang offer only integer support, Visual Studio has
additionally floating point support for from_chars
(and hopefully
to_chars
will get floats in 15.9).
MSVC Blog Promo
I’m pleased to mention that my book was listed in one of the recent articles from the Visual C++ Team:
Books on C++17 | Visual C++ Team Blog
The Plans
The book is still now 100% ready, and here’s the general overview of what you can expect in the following months:
- rewrite the filesystem chapter
- rewrite the parallel stl chapter
- add more examples to the third part of the book
I hope to finish the book with two major updates: at the end of October and then at the end of November.
Some minor fixes might happen along the way of course :)
Until the book is not 100% done, you have a chance to buy it much cheaper and get free updates later.
Tomorrow (Tuesday 3rd Oct) I’m planning to increase the minimum price, from 9,99$
(suggested price is still 24,99$) so today you have a chance to buy it at a lower price.
Your Feedback
I appreciate your initial feedback and support! The book has now more than 370 readers! That’s not too bad I think :)
Let me know what’s your experience with the book. What would you like to change? What would you like to see more?
The Book
Once again here’s the link to the book:
C++17 In Detail
@Leanpub
I've prepared a valuable bonus for you!
Learn all major features of recent C++ Standards on my Reference Cards!
Check it out here: