{"id":3723,"date":"2010-10-25T15:20:49","date_gmt":"2010-10-25T15:20:49","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2010\/10\/25\/video-introduction-to-the-stl-parts-6-and-7\/"},"modified":"2019-02-18T18:45:25","modified_gmt":"2019-02-18T18:45:25","slug":"video-introduction-to-the-stl-parts-6-and-7","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/video-introduction-to-the-stl-parts-6-and-7\/","title":{"rendered":"Video Introduction to the STL, Parts 6 and 7"},"content":{"rendered":"<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\">\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><\/span><\/p>\n<p><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/Shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-6-of-n\">Part 6<\/a> and <a href=\"https:\/\/channel9.msdn.com\/Shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-7-of-n\">Part 7<\/a> of my video lecture series introducing the Standard Template Library are now available; they cover algorithms and functors.<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">Previous parts: <\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/shows\/Going+Deep\/C9-Lectures-Introduction-to-STL-with-Stephan-T-Lavavej\/\">Part 1<\/a> (sequence containers)<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-2-of-n\/\">Part 2<\/a> (associative containers)<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-3-of-n\/\">Part 3<\/a> (smart pointers)<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-4-of-n\/\">Part 4<\/a> (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Nurikabe\">Nurikabe<\/a> solver introduction)<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Standard-Template-Library-STL-5-of-n\/\">Part 5<\/a> (Nurikabe solver conclusion)<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">My Nurikabe solver, available <a href=\"http:\/\/cid-e66e02dc83efb165.office.live.com\/browse.aspx\/nurikabe\">here<\/a>, demonstrates how I use the STL components that I&#8217;ve talked about.&nbsp; I&#8217;ve continued to optimize it; there&#8217;s more work to do, but I&#8217;ve already obtained dramatic speedups:<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"MsoNormalTable\" style=\"border-collapse: collapse\">\n<tbody>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #4f81bd;border-top: #7ba0cd 1pt solid;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';color: white;font-size: 12pt\">Puzzle<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #4f81bd;border-top: #7ba0cd 1pt solid;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';color: white;font-size: 12pt\">Time (v1.1)<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #4f81bd;border-top: #7ba0cd 1pt solid;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';color: white;font-size: 12pt\">Time (v1.7)<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #4f81bd;border-top: #7ba0cd 1pt solid;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';color: white;font-size: 12pt\">Speedup<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">wikipedia_hard<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">87.1 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">5.9 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">14.8x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">wikipedia_easy<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">36.1 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">3.2 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">11.4x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_1<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">18.5 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.6 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">11.9x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_2<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">13.2 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.9 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">7.1x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_3<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">16.8 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">2.2 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">7.8x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_4<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">108.1 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">5.9 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">18.3x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_5<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">89.7 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">7.3 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">12.3x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_6<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">87.5 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">5.7 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">15.3x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_7<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">2123.97 seconds<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">496.0 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">4282.3x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_8<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">2784.7 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">316.7 ms<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">8.8x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_9<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';background: yellow;font-size: 12pt\">13518.2 seconds<\/span><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';background: lime;font-size: 12pt\">32.8 seconds<\/span><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;background: #d3dfee;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';background: lime;font-size: 12pt\">412.4x<\/span><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td width=\"149\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #7ba0cd 1pt solid;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 112.1pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><b><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">nikoli_10<\/p>\n<p><\/span><\/b><\/p>\n<\/td>\n<td width=\"174\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 130.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">11811.8 seconds<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"138\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 103.5pt;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #f0f0f0;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">8.5 seconds<\/p>\n<p><\/span><\/p>\n<\/td>\n<td width=\"96\" valign=\"top\" style=\"border-bottom: #7ba0cd 1pt solid;border-left: #f0f0f0;padding-bottom: 0in;background-color: transparent;padding-left: 5.4pt;width: 1in;padding-right: 5.4pt;border-top: #f0f0f0;border-right: #7ba0cd 1pt solid;padding-top: 0in\">\n<p align=\"center\" class=\"MsoNormal\" style=\"text-align: center;margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1397.5x<\/p>\n<p><\/span><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">Here&#8217;s the changelog:<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.0 (8\/24\/2010) &#8211; First version, appearing in Channel 9&#8217;s Video Introduction to the STL, Part 4.<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.1 (9\/1\/2010) &#8211; Added 1 more puzzle from Wikipedia and 10 puzzles from Nikoli. Improved time formatting with microseconds\/milliseconds\/seconds. The time taken by initial construction and each step of analysis is now recorded.<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.2 (9\/1\/2010) &#8211; Massively accelerated hypothetical contradiction analysis by guessing cells in a deterministic but pseudorandomized order.<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.3 (9\/8\/2010) &#8211; Reorganized Grid::solve() into smaller member functions. Thanks, Corrector2!<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.4 (9\/24\/2010) &#8211; Accelerated hypothetical contradiction analysis further by prioritizing guesses near white cells. Thanks, Michael B.!<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.5 (10\/19\/2010) &#8211; Increased performance by making Grid::confined() use vector&lt;vector&lt;Flag&gt;&gt; instead of set&lt;pair&lt;int, int&gt;&gt;. Further increased performance by postponing Grid::detect_contradictions() until just before Grid::analyze_confinement().<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p>&nbsp;<\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 0pt\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\">1.6 (10\/20\/2010) &#8211; Removed Grid::analyze_isolated_unknown_regions(), which was successful exactly once (on wikipedia_hard), during both top-level analysis and hypothetical contradiction analysis. Removed Grid::operator=()&#8217;s definition and entirely removed Grid::swap(), as they were unused. Avoided copying m_output in Grid&#8217;s private copy ctor, as it isn&#8217;t needed during hypothetical contradiction analysis. Even if, in the future, the solver is extended to capture the outp<\/span><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Part 6 and Part 7 of my video lecture series introducing the Standard Template Library are now available; they cover algorithms and functors. &nbsp; Previous parts: &nbsp; Part 1 (sequence containers) Part 2 (associative containers) Part 3 (smart pointers) Part 4 (Nurikabe solver introduction) Part 5 (Nurikabe solver conclusion) &nbsp; My Nurikabe solver, available here, [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[9,3,32],"class_list":["post-3723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","tag-channel-9","tag-dev","tag-stl"],"acf":[],"blog_post_summary":"<p>Part 6 and Part 7 of my video lecture series introducing the Standard Template Library are now available; they cover algorithms and functors. &nbsp; Previous parts: &nbsp; Part 1 (sequence containers) Part 2 (associative containers) Part 3 (smart pointers) Part 4 (Nurikabe solver introduction) Part 5 (Nurikabe solver conclusion) &nbsp; My Nurikabe solver, available here, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/3723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=3723"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/3723\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=3723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=3723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=3723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}