CXXIter
Ergonomic C++ Iterator interface for STL containers (by seijikun)
fms_iterable
iterators with explicit operator bool() const (by keithalewis)
CXXIter | fms_iterable | |
---|---|---|
3 | 3 | |
36 | 3 | |
- | - | |
0.0 | 6.0 | |
over 1 year ago | 3 months ago | |
C++ | C++ | |
- | - |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
CXXIter
Posts with mentions or reviews of CXXIter.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-09-26.
-
5 Ways to Improve or Avoid Loops in C++20...23
I mostly agree. Though more often than not, it's not as easy as just switching to another language. If you've got a large codebase in C++, switching to Rust is unpracticable. But I think there are some nice lessons to be learned from Rust, that can be translated over to C++. I liked the idea of having the data stored within the locking structure, so it's impossible to access it incorrectly e.g.. And for iterators, I basically cloned Rust's interface in a C++20 library: https://github.com/seijikun/CXXIter
-
ReactivePlusPlus (reactive programming library for c++20) v0.0.1 is out with base operators (looking for feedback)
I'm especially intrigued by the way you implemented your usable interface that contains all of the chainable methods. I used a large struct where I manually added methods for every supported operator. And the operators themselves are then implemented each with their own struct in the back. Arguably, that makes it impossible to extend the public interface from the outside as a user. If I understood it correctly, that's where you used your member_overload mechanism, right? I'm still digging and trying to understand how it works though.
-
CXXIter: A chainable c++20 LINQ-like iterator library
I thought it might be a nice opportunity to get to know C++20 in the process, so I first read up about the new features, and then started applying them to a little iterator library I call CXXIter... that then somehow ended up getting a little bigger and more ergonomic than I had expected. I took inspiration for functions and appearance from LINQ, as well as from Rust's iterators. CXXIter allows passing elements as references, as well as using moves to pass them through the iterator. I know that there already are a couple of these libraries - but what would programming be without a little NIH here and there? :)
fms_iterable
Posts with mentions or reviews of fms_iterable.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-01-03.
-
CXXIter: A chainable c++20 LINQ-like iterator library
Good stuff! I am a fan of LINQ and see you took pains to make your library performant (a common complaint against LINQ). My take on a more C++-y way of doing this is https://github.com/keithalewis/fms_iterable. An iterable is a C++ iterator with explicit operator bool() const to detect the end. The downside is I have to figure out how to translate this into the standard set of LINQ operators. Nowhere near as complete as your work but my main use case is implementing numerical algorithms. Maybe you'll find a pony in there. :-)
-
Single header functional iterator library
See https://github.com/keithalewis/fms_iterable for some ideas in this direction.
-
12 Different Ways to Filter Containers in Modern C++
It can be done: https://github.com/keithalewis/fms_iterable
What are some alternatives?
When comparing CXXIter and fms_iterable you can also consider the following projects:
cpplinq - LINQ for C++ (cpplinq) is an extensible C++11 library of higher-order functions for range manipulation. cpplinq draws inspiration from LINQ for C#.
rangeless - c++ LINQ -like library of higher-order functions for data manipulation
RxCpp - Reactive Extensions for C++
ReactivePlusPlus - Implementation of async observable/observer (Reactive Programming) in C++ with care about performance and templates in mind in ReactiveX approach