layout: true name: blank styling: styling.css styling-by: Martin Weitzel .stylehint[ Styled with [{{styling}}]({{styling}}) by {{styling-by}} ] --- layout: true name: plain copyright: (CC) BY-SA branding: [Dipl.-Ing. Martin Weitzel](http://tbfe.de) customer: [für MicroConsult Training & Consulting GmbH](http://microconsult.de) {{header}} .pagefooter[ {{copyright}}: {{branding}} {{customer}} .microconsult-logo[] ] --- layout: true name: see_BoostBook copyright: (CC) BY-SA branding: [Dipl.-Ing. Martin Weitzel](http://tbfe.de) customer: [für MicroConsult Training & Consulting GmbH](http://microconsult.de) {{header}} .refersto.right[ See also {{refersto}} ] .pagefooter[ {{copyright}}: {{branding}} {{customer}} .microconsult-logo[] ] --- layout: true name: withinfo copyright: (CC) BY-SA branding: [Dipl.-Ing. Martin Weitzel](http://tbfe.de) customer: [für MicroConsult Training & Consulting GmbH](http://microconsult.de) --- template: blank name: frontmatter .title[ [C++ Focus on STL](#online_version) ] .subtitle[ Containers, Iterators, and Algorithms ] .author.pull-left[ Durchführung: Dipl.-Ing. Martin Weitzel Technische Beratung für EDV http://tbfe.de ] .client.pull-right[ Im Auftrag von: MicroConsult Training & Consulting GmbH http://www.microconsult.com ] .copyright[ **Copyright © 2019** **Martin Weitzel**  This work is provided under a [Creative Commons Attribution-ShareAlike License](https://creativecommons.org/licenses/by-sa/3.0/) ] --- template: plain class: agenda name: agenda header: ## Agenda Mandatory topics – covering two days, morning and afternoon – are: .pull-left[ ------------------------------------------------------------------------------- **FIRST DAY** * [Fundamental Architecture ](01_day1.html) * [STL Containers ](02_day1.html) ------------------------------------------------------------------------------- ] .pull-right[ ------------------------------------------------------------------------------- **SECOND DAY** * [Iterators and Algorithms ](03_day2.html) * [Extending the STL ](04_day2.html) ------------------------------------------------------------------------------- ] Optional Parts on both days may be be chosen from:._[] .pull-left[ ------------------------------------------------------------------------------- * [Considering Memory Footprint … and Runtime Performance ](x1_day1.html) ------------------------------------------------------------------------------- ] .pull-right[ ------------------------------------------------------------------------------- * [Various Odds and Ends ](x2_day2.html) * [A Set of Micro-Projects ](microprojects.html) ------------------------------------------------------------------------------- ] In the 3-day version of this course all of the above is covered in a relaxed time frame giving substantially more room for practical exercises and presentation of selected solutions. .F[: In the 2-day version on the second day some selected solutions may rather be explained as demo-programs and partially replace individual practical exercises ending the day. ] --- template: plain name: online_version header: ## Online Version of this Presentation [Creative Commons]: http://de.creativecommons.org/was-ist-cc For all forms of redistribution a [Creative Commons] license applies: .I[[ **(CC) BY-SA**: Attribution (Don't claim Authorship) – Share Alike Namensnennung und Weitergabe unter gleichen Bedingungen ](http://creativecommons.org/licenses/by-sa/3.0/de/)] (Ask the trainer to learn the location on the internet from which you can download the documents.) .W[ The content was produced and checked with adequate care. The author may not be held liable for any errors or inaccuracies still contained. ] You are welcome to point out errors or propose general improvements. --- template: plain header: ### Online References C++ has become a huge topic so it will frequently be necessary to lookup details in an online reference. As general C++ reference the following can be recommended: * http://en.cppreference.com/w/ – totally free, seems to be run by enthusiasts and now includes even [live examples](#online_compilation) * http://www.cplusplus.com/ – obviously financed by moderate pop-ups, nevertheless well organized and up-to-date --- template: plain header: ### Presentation [JavaScript]: http://de.wikipedia.org/wiki/JavaScript [Modern CSS]: http://www.w3.org/Style/CSS [CSS knowledge]: http://www.w3schools.com/css This presentation uses a free HTML5-based slide-show tool named [`remark`](http://remarkjs.com). #### Viewing You may use any recent browser of your choice. * [JavaScript] must be enabled. * [Modern CSS] should be supported.._[] * Cookies are **not** used. .F[: Given an appropriate level of [CSS knowledge] you may be able to tweak the appearance. ] --- template: plain header: ### Following Links Many clickable links have been provided in the hope they will give the online version an added value over the print-outs you received. .I[ You may want to follow links when viewing this presentation by **clicking with the CTRL-key held** down, what will open the target document in a separate browser tab. ] **Because in some countries the law may require it, here is the necessary cautionary disclaimer:** .N.center[ YOU UNDERSTAND AND AGREE THAT UNDER NO CIRCUMSTANCES NEITHER THE AUTHOR OF THIS DOCUMENT NOR THE COMPANY OR ANY ONE ELSE WHO MADE IT ACCESSIBLE TO YOU CAN BE HELD RESPONSIBLE FOR THE CONTENT OF A THIRD PARTY'S INTERNET SITE DISPLAYED WHEN CLICKING ON A LINK PROVIDED IN THIS SET OF DOCUMENTS. ] --- template: plain header: #### Prepared Printouts Attendees of a training will receive a printed version of this document. .I[ You may access a final electronic version including recent changes made during this training or later via download. ] Printable PDF files have the same base name as the HTML version with and suffix changed to `.pdf`. E.g. a PDF of this file (assuming you currently view it in the browser) is [`00_topics.pdf`](00_topic.pdf). #### DIY Printouts [Chrome Browser]: https://www.google.de/chrome/browser/desktop/ Also, with Google's [Chrome Browser] you can create a PDF any time: * Using *Print To File* applies a special style suitable for DIN A4 print-outs in portrait, with the lower half of each page for your notes. * Notes contained in the presentation **will currently not be printed**.._[] .F[: That option may become available in a future version. ] --- template: plain name: annotations header: #### Private Annotations The core content of this HTML file is written in readable [markdown format].._[] .F[: With minor extensions, if you happen to know markdown already. ] You have the option to handle this document by purely electronic means, *including private annotations* you may want to add. 1. Save the HTML files of the presentation locally. 2. Add annotations with a text editor of your choice. When viewing the document in a browser you may chose to view your annotations by changing to *presenter's mode* with the `p` key. * **You may try it out right now – back to normal is also with `p`.** .I[ Future versions of this presentation **may or may not** use the notes section for their own purposes – but in any case it should be possible to merge your private annotations with a [diff-tool]. ] [markdown format]: http://de.wikipedia.org/wiki/Markdown [diff-tool]: http://de.wikipedia.org/wiki/Diff ??? The content structure of the HTML file is as follows: ```````````````````````````````````````````````````` (some lines of HTML leader)
… … first presentation page … … --- … second presentation page … --- … … (etc.) … --- … … last presentation page … … </textarea> (some lines of HTML trailer) ```````````````````````````````````````````````````` Lines consisting of **exactly three minus signs** (nothing else!) are page separators. Annotations are shown in *Presenter's View* only and must be separated from the slide content with a line consisting of **exactly three question marks**. ``` … --- … … presentation slide content … … ??? … … annotations added by you … … --- … ``` BTW: The easiest way to include small code examples, what might be a typical use case for private annotations, is to just indent them by four spaces – surrounding code fragments with lines of three or more back-ticks, a markdown extension known as [Fenced Code Blocks], is the other option. #include
int main() { std::cout << "hello, world\n"; } [Fenced Code Blocks]: https://help.github.com/articles/github-flavored-markdown#fenced-code-blocks As we are at it go: when you have this page loaded in a text editor, with the line above – **not displayed** when you view this in the browser – and the paragraph before the code example you have a nice way how to embedded links without making the text flow unreadable or inconvenient to edit. LAST HINT: When loaded in a text editor you will find this final page close to the end (or can locate it easily by searching for LAST HINT); if you start from here instead from the top it may be be easier to discover the document structure, as at the beginning there are first a number of layout template pages not visible in the browser. --- template: plain name: summary header: ## Summary This document gave some * some [General Information](#online_version) on this course. ------------------------------------------------------------------------------- What to do next? * [Go back to the Agenda](#agenda) and chose a specific part … * … or continue with the next (and final) page of this part. --- template: plain header: ## A Hidden Jewel … [Algorithm Library]: http://en.cppreference.com/w/cpp/algorithm [Alexander Stepanov]: http://www.stlport.org/resources/StepanovUSA.html [David Musser]: http://www.cs.rpi.edu/~musser/ [Sean Parent]: https://twitter.com/seanparent … seems to be the [Algorithm Library] part of the STL, judging from how often it stays unused while creativity is put into coding more or less complicated "little pieces of art" (ironic innuendo not by accident). If there is some time left until we start – may be because we have to wait for late-comers – the following lecture by *Sean Parent* may be of interest: .N.center[ https://www.youtube.com/watch?v=IzNtM038JuI ] [Minute 04:16]: https://www.youtube.com/watch?feature=player_detailpage&v=IzNtM038JuI#t=256 [Minute 12:30]: https://www.youtube.com/watch?feature=player_detailpage&v=IzNtM038JuI#t=750 If there are at least 10…15 minutes to bridge, a good starting point is at [Minute 12:30].._[] .F[: If there time for that kind of intermezzo right now but you want to see later on your own how a really complicated code gets simplified by using appropriate STL-algorithms, you may view from [Minute 04:16]. Or go right to the beginning and watch the introduction too – the host is [Alexander Stepanov], who designed the STL 20 years ago together with [David Musser]. ]