[all-commits] [llvm/llvm-project] 21d434: [ADT] Add `zip_equal` for iteratees of equal lengths

Jakub Kuderski via All-commits all-commits at lists.llvm.org
Tue Nov 29 16:58:04 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 21d434d997db58afcf03f72c5a34a56d2d46f6d1
      https://github.com/llvm/llvm-project/commit/21d434d997db58afcf03f72c5a34a56d2d46f6d1
  Author: Jakub Kuderski <kubak at google.com>
  Date:   2022-11-29 (Tue, 29 Nov 2022)

  Changed paths:
    M llvm/include/llvm/ADT/STLExtras.h
    M llvm/unittests/ADT/IteratorTest.cpp

  Log Message:
  -----------
  [ADT] Add `zip_equal` for iteratees of equal lengths

Add a new version of `zip` that assumes that all iteratees have equal
lengths. The difference compared to `zip_first` is that `zip_equal`
checks this assumption in builds with assertions enabled.

This will allow us to clearly express the intent when working with
equally-sized ranges without having to write this assertion manually.

This is similar to Python's `zip(..., equal=True)` [1] or
`more_itertools.zip_equal` [2].

I saw this first suggested by @benvanik.

[1] https://peps.python.org/pep-0618/
[2] https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.zip_equal

Reviewed By: dblaikie

Differential Revision: https://reviews.llvm.org/D138865




More information about the All-commits mailing list