Difference between revisions of "Intermediate C++ Game Programming Tutorial 16"
From Chilipedia
(→Video Timestamp Index) |
(→Video Timestamp Index) |
||
Line 18: | Line 18: | ||
* Modyfing sorting order by passing a comparison function object (functor) as a predicate, like so:<br /><code>std::sort(vec.begin(),vec.end(),std::greater<int>{});</code> [https://youtu.be/3J1Pz30IE4Q?t=3m17s 3:17]<br />Note: vec is a std::vector of integers | * Modyfing sorting order by passing a comparison function object (functor) as a predicate, like so:<br /><code>std::sort(vec.begin(),vec.end(),std::greater<int>{});</code> [https://youtu.be/3J1Pz30IE4Q?t=3m17s 3:17]<br />Note: vec is a std::vector of integers | ||
* Sort custom types, example code for sorting a custom class object by creating a functor, called like so: <br /><code>std::sort(vecObj.begin(),vecObj.end(),Obj::YLess{});</code> [https://youtu.be/3J1Pz30IE4Q?t=4m07s 4:07] | * Sort custom types, example code for sorting a custom class object by creating a functor, called like so: <br /><code>std::sort(vecObj.begin(),vecObj.end(),Obj::YLess{});</code> [https://youtu.be/3J1Pz30IE4Q?t=4m07s 4:07] | ||
− | * Removing items from a container, <code>std::remove</code> and <code>std::remove_if</code> [https://youtu.be/3J1Pz30IE4Q?t=6m11s 6:11] <br />- Create functor to remove with threshold variable <br />Use container member function <code>erase()</code> to correct the endpoint of the container after the remove operation 9:51 | + | * Removing items from a container, <code>std::remove</code> and <code>std::remove_if</code> [https://youtu.be/3J1Pz30IE4Q?t=6m11s 6:11] <br />- Create functor to remove with threshold variable <br />- Use container member function <code>erase()</code> to correct the endpoint of the container after the remove operation 9:51 |
* [WORK-IN-PROGRESS] | * [WORK-IN-PROGRESS] | ||
Revision as of 03:54, 29 September 2019
In the video we take a look at a couple of bangers from <algorithm>
, and we learn what lambda functions are and how to use them.
Contents
[hide]Topics Covered
- Algorithms
std::sort
andstd::remove_if
- Concepts (as in, type concepts like Comparable)
-
<functional>
functors as predicates - Lambda functions
Errata
In the video Chili states that std::remove does not preserve the relative order of elements in the container, but this is fake news! Relative order is preserved: [1]
Video Timestamp Index
- Generic Algorithms: how Templates and Iterators make Algorithms independent of Data Types and Containers 0:17
- The
std::sort
algorithm and its requirements 0:43 - Sorting a (forward) list
std::list
, using its member functionstd::list::sort()
2:16 - Introducing Concepts / named requirements of types (e.g., the
Compare
requirement ofstd::sort
2:54 - Modyfing sorting order by passing a comparison function object (functor) as a predicate, like so:
std::sort(vec.begin(),vec.end(),std::greater<int>{});
3:17
Note: vec is a std::vector of integers - Sort custom types, example code for sorting a custom class object by creating a functor, called like so:
std::sort(vecObj.begin(),vecObj.end(),Obj::YLess{});
4:07 - Removing items from a container,
std::remove
andstd::remove_if
6:11
- Create functor to remove with threshold variable
- Use container member functionerase()
to correct the endpoint of the container after the remove operation 9:51 - [WORK-IN-PROGRESS]
Homework
Solve the problems in Source.cpp attached below using the <algorithm> library and other parts of the standard library as extensively as possible. As a bonus problem, implement the sprite drawing effect shown at the end of the video using a lambda function.
Related Series
For an in-depth look into the <algorithm> library and beyond, check out STD Gems.