Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

cgyurgyik/STL-algorithm-examples

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

As I listened to quite a few talks about the importance of using C++ STL algorithms, I realized I needed to practice using them myself. This repository will provide simple examples for each algorithm. The target audience is C++ beginners, in hopes to show them the simplicity and power of these algorithms. Use this not as a replacement, but as another source of examples that can be quickly read and understood.

Example

Given a std::vector v of integers:

// Determines whether 'v' contains 4.
bool contains_four = false;
for (int i = 0; i < v.size(); ++i) {
  if (i == 4) { 
    contains_four = true;
    break;
  }
}

This can be improved upon by using a range-based loop, where we avoid the micro cost of std::vector::size:

// Determines whether 'v' contains 4.
bool contains_four = false;
for (const int i : v) {
  if (i == 4) {
    contains_four = true;
    break;
  }
}

Even better though, is using std::any_of:

// Determines whether 'v' contains 4.
const bool contains_four = std::any_of(v.cbegin(), v.cend(), [](int i)->bool{ return i == 4; });

Here, we've taken a raw for loop and replaced it with an STL algorithm that, in one line, tells us more clearly what is occurring. This improves readability, minimizes number of lines of code, and provides (likely) the best algorithm for what you're trying to do.

With the release of C++20, this will simplify even further using ranges:

const bool contains_four = std::ranges::any_of(v, [](int i)->bool{ return i == 4; }); 

Related STL Talks

TODO

  • Finish uninitialized memory algorithms.

References

Releases

No releases published

Packages

No packages published
Morty Proxy This is a proxified and sanitized view of the page, visit original site.