Partners: KDAB Whole Tomato Software CppDepend

01 October 2018

Conversions, Searchers and C++17 In Detail Updates

C++17 In Detail

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:

C++17 In Detail @Leanpub

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

Get my free ebook about C++17!

More than 50 pages about the new Language Standard.

C++17 in detail, by Bartlomiej Filipek

© 2017, Bartlomiej Filipek, Blogger platform
Any opinions expressed herein are in no way representative of those of my employers.
This site contains ads or referral links, which provide me with a commission. Thank you for your understanding.