Defining Ranges using Sentinels

Using Sentinels with Standard Algorithms in C++

How can sentinels be used with standard algorithms in C++?

Abstract art representing computer programming

Sentinels can be integrated with standard algorithms in C++ to provide more flexible termination conditions. Standard algorithms such as std::ranges::for_each() can accept both iterators and sentinels, allowing you to define when an algorithm should stop processing elements.

Here’s an example of using a sentinel with std::ranges::for_each():

#include <algorithm>
#include <iostream>
#include <vector>

struct Sentinel {
  bool operator==(
    std::vector<int>::const_iterator iter) const {
    return *iter < 0;
  }
};

void Log(int x) { std::cout << x << ", "; }

int main() {
  std::vector<int> numbers{1, 4, 3, 8, -2, 5};
  Sentinel s;

  std::ranges::for_each(numbers.begin(), s, Log);
}
1, 4, 3, 8,

In this example, std::ranges::for_each() iterates through the vector and logs each element until it encounters the first negative number, as specified by the custom sentinel.

Using sentinels with standard algorithms allows for more complex and expressive termination conditions, making your algorithms more flexible and powerful. By defining custom sentinels, you can tailor the behavior of standard algorithms to suit your specific needs.

Answers to questions are automatically generated and may not have been reviewed.

A computer programmer
Part of the course:

Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Free, unlimited access

This course includes:

  • 125 Lessons
  • 550+ Code Samples
  • 96% Positive Reviews
  • Regularly Updated
  • Help and FAQ
Free, Unlimited Access

Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Screenshot from Warhammer: Total War
Screenshot from Tomb Raider
Screenshot from Jedi: Fallen Order
Contact|Privacy Policy|Terms of Use
Copyright © 2024 - All Rights Reserved