{"id":1546,"date":"2017-05-03T00:08:21","date_gmt":"2017-05-03T00:08:21","guid":{"rendered":"https:\/\/cppcon.org\/?page_id=1546"},"modified":"2024-04-04T21:35:06","modified_gmt":"2024-04-05T04:35:06","slug":"exploring-the-cpp-standard-library","status":"publish","type":"page","link":"https:\/\/cppcon.org\/exploring-the-cpp-standard-library\/","title":{"rendered":"Applied Modern C++: Exploring the Standard Library [2017 class archive]"},"content":{"rendered":"<p>&#8220;Applied Modern C++: Exploring the Standard Library&#8221; is a two-day training course with programming exercises taught by Christopher Di Bella. It is offered at the\u00a0<a href=\"http:\/\/www.sheratonbellevue.com\/\">Sheraton Bellevue Hotel<\/a> from 9AM to 5PM on Saturday and Sunday, September 30th and October 1st, 2017 (immediately after the conference). Lunch is included.<\/p>\n<h3>Course Description<\/h3>\n<p>C++ has been evolving very rapidly since the advent of C++11, and if you aren&#8217;t able to keep yourself up-to-date on what&#8217;s happening with respect to the evolution of C++, you might start to feel left behind.<\/p>\n<p>The Standard Library makes up an enormous portion of Standard C++. Its continual growth from C++11 onward might mean that you&#8217;re not aware of everything that the library now offers. Do you identify with any of the following?<\/p>\n<ul>\n<li>You&#8217;ve recently moved from C++98 (or &#8220;C++03&#8221;) to a more modern Standard<\/li>\n<li>You&#8217;re relatively new to C++, and have at least six months experience with modern C++<\/li>\n<li>You use a lot of handwritten algorithms, such as searching, sorting, removing duplicate entries, and have a lot of in-house testing<\/li>\n<li>You use linked lists or maps, and can&#8217;t seem to break a bottleneck<\/li>\n<li>You dislike std::string, std::vector, or exception handling<\/li>\n<li>You use C-style strings or C-style arrays<\/li>\n<li>You find yourself handwriting a lot of memory management<\/li>\n<li>You&#8217;d like string processing in C++ to be easier<\/li>\n<li>You&#8217;d like to avoid run-time polymorphism, but don&#8217;t want to use unions<\/li>\n<li>You&#8217;ve been meaning to learn more about the Standard Library, but aren&#8217;t sure where to start<\/li>\n<li>You&#8217;re curious about either the Concepts TS or the Ranges TS<\/li>\n<\/ul>\n<p>If you identify with even one of the above, you will most likely benefit from attending this course. We will be diving into both certain parts of the C++ Standard Library and the newly minted Ranges TS, which is a first step toward a brand new Standard Library v2.<\/p>\n<h3>Prerequisites<\/h3>\n<ul>\n<li><b>Experience:<\/b> You are expected to know how to write ordinary C++, preferably C++11 or later, as very little time will be spent on language features<\/li>\n<li><b>Audience:<\/b>\u00a0beginner, intermediate, advanced<\/li>\n<li><b>Operating system:<\/b>\u00a0Windows, Linux, OS X<\/li>\n<li><b>Software:<\/b>\u00a0Docker (we will briefly cover the set-up in class, but it will be ideal for you to have the software installed and know basic use ahead of time).<\/li>\n<\/ul>\n<h3>Course Topics<\/h3>\n<ol>\n<li>Basics\n<ol>\n<li>std::vector<\/li>\n<li>Standard algorithms survey<\/li>\n<\/ol>\n<\/li>\n<li>String manipulation<\/li>\n<li>Containers<\/li>\n<li>Input and output<\/li>\n<li>Iterators and sentinels<\/li>\n<li>Utilities\n<ol>\n<li>std::tuple<\/li>\n<li>std::optional<\/li>\n<li>std::variant<\/li>\n<\/ol>\n<\/li>\n<li>Invocables<\/li>\n<li>Writing a container\n<ol>\n<li>What goes into writing a container?<\/li>\n<li>Smart pointers<\/li>\n<li>Exception handling<\/li>\n<li>Advanced dynamic memory management<\/li>\n<li>Was it all really worth the effort in the end?<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p class=\"p1\"><span class=\"s1\">We will look at practical aspects for most topics: this will sometimes include a case study. For example, we consider a modern, library-based approach to building a customized container.<\/span><\/p>\n<p class=\"p1\"><span class=\"s1\">Thread support and atomic operations are not included in this class. Please attend <a href=\"https:\/\/cppcon.org\/concurrent-thinking-in-c\">Anthony Williams&#8217;<\/a>\u00a0class if you would like to learn about C++ concurrency in action.<\/span><\/p>\n<h3>Course\u00a0Instructor<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-1668 size-full\" src=\"https:\/\/cppcon.org\/wp-content\/uploads\/2017\/05\/ChristopherDiBella.jpeg\" width=\"175\" height=\"175\" srcset=\"https:\/\/cppcon.org\/wp-content\/uploads\/2017\/05\/ChristopherDiBella.jpeg 576w, https:\/\/cppcon.org\/wp-content\/uploads\/2017\/05\/ChristopherDiBella-150x150.jpeg 150w, https:\/\/cppcon.org\/wp-content\/uploads\/2017\/05\/ChristopherDiBella-300x300.jpeg 300w\" sizes=\"auto, (max-width: 175px) 100vw, 175px\" \/><\/p>\n<p><strong>Christopher Di Bella<\/strong> is a software engineer for Codeplay&#8217;s runtime technology in Edinburgh, UK, and is also an avid C++ programmer. He previously worked as a software developer for Nasdaq, and as a university tutor\/assistant instructor for the University of New South Wales&#8217; <i>Advanced C++ Programming<\/i> course in Sydney, Australia. In his spare time, Chris enjoys snowboarding, playing board games, and watching films.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Applied Modern C++: Exploring the Standard Library&#8221; is a two-day training course with programming exercises taught by Christopher Di Bella. It is offered at the\u00a0Sheraton Bellevue Hotel from 9AM to 5PM on Saturday and Sunday, September 30th and October 1st, 2017 (immediately after the conference). Lunch is included. Course Description C++ has been evolving very [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-1546","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages\/1546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/comments?post=1546"}],"version-history":[{"count":3,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages\/1546\/revisions"}],"predecessor-version":[{"id":8502,"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/pages\/1546\/revisions\/8502"}],"wp:attachment":[{"href":"https:\/\/cppcon.org\/wp-json\/wp\/v2\/media?parent=1546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}