Welcome to another installment of C9 Lectures covering the powerful general C++ library, STL. Joining us once again is the great Stephan T. Lavavej, Microsoft's keeper of the STL cloth (this means he manages the partnership between the owners of STL (dinkumware) and Microsoft, including, of course, bug fixes and enhancements to the STL that ships as part of Visual C++). Simply, Stephan is a C++ library developer.



As is Stephan's nature, he elaborates on technical details in very substantive way. The Standard Template Library, orSTL, is a C++ library of container classes, algorithms, and iterators. STL provides many fundamental algorithms and data structures. Furthermore, the STL is a general-purpose library: its components are heavily parameterized, such that almost every component in the STL is a template.



In part 4, Stephan explains his solution to writing a solver for the Nurikabe puzzle using the STL (of course...). You will be introduced to some new concepts as well as use some of the things you have already learned.



Get the output and source code (v1) for Stephan's Nurikabe solver.



Get the optimized output and source code(v1.2) for Stephan's Nurikabe solver. 1.2 adds new test cases, improves the output, and significantly speeds up certain test cases. 1.2 is a better foundation for the performance exploration that Stephan suggested for the homework assignment. You're doing your homework, right? :)



Enjoy! Learn!



Books mentioned by Stephen:

The C++ Standard Library: A Tutorial And Reference by Nicolai M. Josuttis



Effective STL by Scott Meyers

[STL Introduction lecture links]

Part 1 (sequence containers)

Part 2 (associative containers)

Part 3 (smart pointers)

Part 4 (Nurikabe solver) - see Wikipedia's article and Stephan's updated source code

Part 5 (Nurikabe solver, continued)

Part 6 (algorithms and functors)

Part 7 (algorithms and functors, continued)

Part 8 (regular expressions)

Part 9 (rvalue references)

Part 10 (type traits)

Code:

https://github.com/Microsoft/nurikabe