In Part 6 of my second video lecture series focused on the Standard Template Library, I demonstrate how to write a "pretty printer" for STL containers that's capable of formatting a vector<tuple<int, string, int>> as [(1, "ten", 100), (2, "twenty", 200), (3, "thirty", 300)]. It's easy to use, with the default syntax being print(co...
In Part 3 of my video lecture series exploring the Standard Template Library's implementation, I explain how our powerful correctness checks in debug mode work. In VC10, they're controlled by the macro _ITERATOR_DEBUG_LEVEL, which supersedes VC8 and VC9's more confusing _SECURE_SCL and _HAS_ITERATOR_DEBUGGING macros. Additionally, VC10'...
Part 2 of my video lecture series exploring the Standard Template Library's implementation is now available. In this part, I walk through how our STL algorithms equal() and copy() use template metaprogramming to detect when it's safe to call memcmp() and memmove(), which are potentially faster than the generic loops. In Part 1's comments...
Part 1 of my video lecture series exploring the Standard Template Library's implementation is now available. In this part, I explain how some of shared_ptr's magic works, including type erasure and make_shared<T>()'s optimizations that save both space and time. This advanced series assumes that you're familiar with C++ and the STL'...
The final parts of my video lecture series introducing the Standard Template Library are now available. Part 9 covers a single function, std::move(), and explains how rvalue references power move semantics. Part 10 covers <type_traits>, a header added by TR1/C++0x, and explains the basics of template metaprogramming. Here's t...
C++0x's <regex> header combines Perl's regular expressions with C++'s templates and iterators. The result, like the rest of the STL, is insanely powerful but potentially overwhelming at first sight. It's actually easy to use, and much easier than writing string processing code by hand. I demonstrate how to start using <re...
Part 6 and Part 7 of my video lecture series introducing the Standard Template Library are now available; they cover algorithms and functors. Previous parts: Part 1 (sequence containers)Part 2 (associative containers)Part 3 (smart pointers)Part 4 (Nurikabe solver introduction)Part 5 (Nurikabe solver conclusion) My Nurikabe solver, ...
In the fifth part of my video lecture series introducing the Standard Template Library, I explain how the advanced analysis in my Nurikabe solver works. One of its steps involves using a breadth-first search to detect any unreachable cells. Mandatory prerequisites of Part 5 are reading Wikipedia's Nurikabe page and watching Part 4 (the i...