A new post every Tuesday and Friday morning

Predicates on ranges with the STL

Published February 23, 2017 - 6 Comments

In this episode of the STL learning resource, we see algorithms that can be used in a variety of contexts but that have one thing in common: they return a boolean characteristic of one or several ranges. The *_of series The STL provides 3 algorithms that indicates whether all, some, or none of the elements of a range satisfy […]

Strong lambdas: strong typing over generic types

Published February 20, 2017 - 2 Comments

This post is a new one in the series about strong types. I didn’t intend the series to contain more than 3 posts initially, covering the topics of strong types to make interfaces clearer and more robust. But I later encountered a need, still about strongly typing interfaces and that I shall describe in the motivation […]

Custom comparison, equality and equivalence with the STL

Published February 16, 2017 - 2 Comments

Let’s start with the following code excerpt: 

There are 2 sets of data represented by 2 sorted vectors v1 and v2, on which we apply a std::set_difference (see Algorithms on sets). This std::set_difference writes its output in results, with std::back_inserter ensuring that all outputs are push_back’d into results. One particularity though: a custom comparison operator […]

std::transform, a central algorithm

Published February 13, 2017 - 3 Comments

std::transform is a very useful algorithm. Let’s see what it can do. This post is part of the STL learning resource. std::transform on a range Essentially, std::transform applies a function to each element of a range: Here is its prototype:

As soon as you start working with the STL the need for std::transform appears. For example, to obtain the […]

What 70 people came up with on expressive code

Published February 6, 2017 - 7 Comments

Last week held the monthly meetup of Software Craftsmanship in my area. The organizer, Stéphane Bagnier, proposed a very original and interesting schedule for the evening. After a short series of brief and spontaneous presentations, any attendee could propose a topic he found worth spending time talking about, and then everyone got to vote. The 2 topics receiving the […]

The searching <algorithm>s the STL holds secret

Published February 2, 2017 - 5 Comments

Let’s wrap up the series about searching with the STL by reviewing a handful of algorithms that are much less known than those presented in the other posts, but can prove themselves quite useful. Here is the series about searching with the STL: How to (std::)find something efficiently with the STL: covering classical STL algorithms for performing searches […]

How to choose good names in your code

Published January 30, 2017 - 7 Comments

Naming is SO important. If your code is going to be read at least one time — if only by yourself — then names will play a major part in your capacity to work with it. Variable names, function names, class names, names in an interface, all are priceless ways to let your code tell more about […]

Searching when you have access to an STL container

Published January 26, 2017 - 0 Comments

After seeing how to search for values in a range delimited by iterators, let’s see how to operate efficiently when you directly have access to a C++ container. This is the second one in the series about searching with the STL: How to (std::)find something efficiently with the STL: covering classical STL algorithms for performing searches on ranges of […]

STL Function objects: Stateless is Stressless

Published January 23, 2017 - 2 Comments

The need for function objects arises almost as soon as you start using the STL. This post shows how to design them so that they contribute in making your code using the STL more expressive and more robust.   Function objects Here is a brief recap on function objects before getting to the meat. If […]