{"id":3443,"date":"2011-02-11T16:38:00","date_gmt":"2011-02-11T16:38:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2011\/02\/11\/shared_ptr-advanced-stl-part-1\/"},"modified":"2019-02-18T18:45:14","modified_gmt":"2019-02-18T18:45:14","slug":"shared_ptr-advanced-stl-part-1","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/shared_ptr-advanced-stl-part-1\/","title":{"rendered":"shared_ptr &#8211; Advanced STL, Part 1"},"content":{"rendered":"<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-Advanced-STL-1-of-n\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 1<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> of my video lecture series exploring the Standard Template Library&#8217;s implementation is now available.&nbsp; In this part, I explain how some of <\/span><\/span><\/span><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">shared_ptr&#8217;s magic works, including type erasure and make_shared&lt;T&gt;()&#8217;s optimizations that save both space and time.<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">&nbsp;<\/span><\/span><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">This advanced series assumes that you&#8217;re familiar with C++ and the STL&#8217;s interface, but not the STL&#8217;s implementation.&nbsp; If you haven&#8217;t used the STL extensively yet, I recommend watching my introductory series.&nbsp; For reference, here are all of the links:<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">&nbsp;<\/span><\/span><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">[STL Introduction]<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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\/\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 1<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (sequence containers)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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\/\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 2<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (associative containers)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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\/\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 3<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (smart pointers)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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\/\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 4<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (Nurikabe solver) &#8211; see Wikipedia&#8217;s <\/span><\/span><a href=\"http:\/\/en.wikipedia.org\/wiki\/Nurikabe\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">article<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> and my <\/span><\/span><a href=\"http:\/\/cid-e66e02dc83efb165.office.live.com\/browse.aspx\/nurikabe\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">updated source code<\/span><\/span><\/span><\/a><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><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\/\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 5<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (Nurikabe solver, continued)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 6<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (algorithms and functors)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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-7-of-n\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 7<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (algorithms and functors, continued)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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-8-of-n\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 8<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (regular expressions)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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-9-of-n\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 9<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (rvalue references)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><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-10-of-10\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 10<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (type traits)<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">&nbsp;<\/span><\/span><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">[Advanced STL]<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><a href=\"https:\/\/channel9.msdn.com\/Shows\/Going+Deep\/C9-Lectures-Stephan-T-Lavavej-Advanced-STL-1-of-n\"><span style=\"color: #0000ff\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Part 1<\/span><\/span><\/span><\/a><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\"> (<\/span><\/span><\/span><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">shared_ptr)<\/p>\n<p><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><\/p>\n<p><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">&nbsp;<\/span><\/span><\/p>\n<p><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Stephan T. Lavavej<\/p>\n<p><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span style=\"font-family: 'Verdana','sans-serif';font-size: 12pt\"><span style=\"font-family: verdana,geneva\"><span style=\"font-size: medium\">Visual C++ Libraries Developer<\/span><\/span><\/span><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Part 1 of my video lecture series exploring the Standard Template Library&#8217;s implementation is now available.&nbsp; In this part, I explain how some of shared_ptr&#8217;s magic works, including type erasure and make_shared&lt;T&gt;()&#8217;s optimizations that save both space and time. &nbsp; This advanced series assumes that you&#8217;re familiar with C++ and the STL&#8217;s interface, but not [&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-3443","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 1 of my video lecture series exploring the Standard Template Library&#8217;s implementation is now available.&nbsp; In this part, I explain how some of shared_ptr&#8217;s magic works, including type erasure and make_shared&lt;T&gt;()&#8217;s optimizations that save both space and time. &nbsp; This advanced series assumes that you&#8217;re familiar with C++ and the STL&#8217;s interface, but not [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/3443","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=3443"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/3443\/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=3443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=3443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=3443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}