MCPcopy Create free account
hub / github.com/AlexInLog/ReactivePlusPlus / main

Function main

src/examples/rpp/doxygen/group_by.cpp:8–59  ·  view source on GitHub ↗

* @example group_by.cpp **/

Source from the content-addressed store, hash-verified

6 * @example group_by.cpp
7 **/
8int main()
9{
10 //! [group_by]
11 rpp::source::just(1, 2, 3, 4, 5, 6, 7, 8)
12 | rpp::operators::group_by([](int v) { return v % 2 == 0; })
13 | rpp::operators::subscribe([](auto grouped_observable) {
14 auto key = grouped_observable.get_key();
15 std::cout << "new grouped observable " << key << std::endl;
16 grouped_observable.subscribe([key](int val) {
17 std::cout << "key [" << key << "] Val: " << val << std::endl;
18 });
19 });
20 // Output: new grouped observable 0
21 // key [0] Val: 1
22 // new grouped observable 1
23 // key [1] Val: 2
24 // key [0] Val: 3
25 // key [1] Val: 4
26 // key [0] Val: 5
27 // key [1] Val: 6
28 // key [0] Val: 7
29 // key [1] Val: 8
30 //! [group_by]
31 //
32 //! [group_by selector]
33 struct person
34 {
35 std::string name;
36 int age;
37 };
38 rpp::source::just(person{"Kate", 18},
39 person{"Alex", 25},
40 person{"Nick", 18},
41 person{"Jack", 25},
42 person{"Tom", 30},
43 person{"Vanda", 18})
44 | rpp::operators::group_by([](const person& v) { return v.age; }, [](const person& v) { return v.name; })
45 | rpp::operators::subscribe([](auto grouped_observable) {
46 grouped_observable.subscribe([age = grouped_observable.get_key()](const std::string& name) {
47 std::cout << "Age [" << age << "] Name: " << name << std::endl;
48 });
49 });
50
51 // Output: Age [18] Name: Kate
52 // Age [25] Name: Alex
53 // Age [18] Name: Nick
54 // Age [25] Name: Jack
55 // Age [30] Name: Tom
56 // Age [18] Name: Vanda
57 //! [group_by selector]
58 return 0;
59}

Callers

nothing calls this directly

Calls 4

justFunction · 0.85
subscribeFunction · 0.85
group_byFunction · 0.50
subscribeMethod · 0.45

Tested by

no test coverage detected