Showing results for Dev - C++ Team Blog

Jul 11, 2011
0
0

Container Pretty Printer – Advanced STL, Part 6

Visual CPP Team
Visual CPP Team

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

C++
Apr 5, 2011
0
0

_ITERATOR_DEBUG_LEVEL – Advanced STL, Part 3

Visual CPP Team
Visual CPP Team

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

C++
Mar 8, 2011
0
0

Algorithm Optimizations – Advanced STL, Part 2

Visual CPP Team
Visual CPP Team

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

C++
Feb 11, 2011
0
0

shared_ptr – Advanced STL, Part 1

Visual CPP Team
Visual CPP Team

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

C++
Jan 7, 2011
0
0

Rvalue References and Type Traits – Video Introduction to the STL, Parts 9 and 10

Visual CPP Team
Visual CPP Team

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++
Nov 18, 2010
0
0

Regular Expressions – Video Introduction to the STL, Part 8

Visual CPP Team
Visual CPP Team

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

C++
Oct 25, 2010
0
0

Video Introduction to the STL, Parts 6 and 7

Visual CPP Team
Visual CPP Team

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

C++
Sep 16, 2010
0
0

Video Introduction to the STL, Part 5

Visual CPP Team
Visual CPP Team

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

C++