CINQ
CINQ copied to clipboard
an implementation of Microsoft's Language integrated query for C++
CINQ: C++ Integrated Query
An implementation of Microsoft's Language Integrated Query for C++.
This library is our class project for Bjarne Stroustrup's Language Library Design class.
Why LINQ?
LINQ allows you to simplify data processing code. For example, both snippets below do the same thing --- find the temperatures of the five coldest rainy days in the provided data set.
Normal version:
vector<weather_point> result;
for (auto& data : weather_data)
{
if (data.rain) result.push_back(data);
}
sort(result.begin(), result.end(),
[](const auto &a, const auto &b) { return a.temp_min < b.temp_min; });
vector<weather_point> five;
for (size_t i = 0; i < 5; i++) five.push_back(result[i]);
vector<int> temps;
for (auto& data : five) temps.push_back(data.temp_min);
The LINQ version is much easier to understand:
cinq::from(weather_data)
.where([](const weather_point& w) { return w.rain; })
.order_by([](const weather_point& w) { return w.temp_min; })
.take(5)
.select([](const weather_point& w) { return w.temp_min; })
.to_vector();
Intrigued? Please take a look at our documentation linked below.
Learn more
Authors
- Kevin Chen @kevin1
- Jonathan Barrios @jeb2239
- Jonathan Wong @thejonathanwong