1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
// https://iq.opengenus.org/containers-cpp-stl/
#define i_key int
#define i_val int
#include <stc/csmap.h>
#include <stdio.h>
int main()
{
// empty map containers
csmap_int gquiz1 = {0}, gquiz2 = {0};
c_defer(
csmap_int_drop(&gquiz1),
csmap_int_drop(&gquiz2)
){
// insert elements in random order
csmap_int_insert(&gquiz1, 2, 30);
csmap_int_insert(&gquiz1, 4, 20);
csmap_int_insert(&gquiz1, 7, 10);
csmap_int_insert(&gquiz1, 5, 50);
csmap_int_insert(&gquiz1, 3, 60);
csmap_int_insert(&gquiz1, 1, 40);
csmap_int_insert(&gquiz1, 6, 50);
// printing map gquiz1
printf("\nThe map gquiz1 is :\n\tKEY\tELEMENT\n");
c_foreach (itr, csmap_int, gquiz1)
printf("\t%d\t%d\n", itr.ref->first, itr.ref->second);
printf("\n");
// assigning the elements from gquiz1 to gquiz2
c_foreach (i, csmap_int, gquiz1)
csmap_int_insert(&gquiz2, i.ref->first, i.ref->second);
// print all elements of the map gquiz2
printf("\nThe map gquiz2 is :\n\tKEY\tELEMENT\n");
c_foreach (itr, csmap_int, gquiz2)
printf("\t%d\t%d\n", itr.ref->first, itr.ref->second);
printf("\n");
// remove all elements up to element with key=3 in gquiz2
printf("\ngquiz2 after removal of elements less than key=3 :\n");
printf("\tKEY\tELEMENT\n");
csmap_int_erase_range(&gquiz2, csmap_int_begin(&gquiz2),
csmap_int_find(&gquiz2, 3));
c_foreach (itr, csmap_int, gquiz2)
printf("\t%d\t%d\n", itr.ref->first, itr.ref->second);
printf("\n");
// remove all elements with key = 4
int num = csmap_int_erase(&gquiz2, 4);
printf("\ngquiz2.erase(4) : %d removed\n", num);
printf("\tKEY\tELEMENT\n");
c_foreach (itr, csmap_int, gquiz2)
printf("\t%d\t%d\n", itr.ref->first, itr.ref->second);
printf("\n");
// lower bound and upper bound for map gquiz1 key = 5
printf("gquiz1.lower_bound(5) : ");
printf("\tKEY = %d\t", csmap_int_lower_bound(&gquiz1, 5).ref->first);
printf("\tELEMENT = %d\n", csmap_int_lower_bound(&gquiz1, 5).ref->second);
printf("gquiz1.upper_bound(5) : ");
printf("\tKEY = %d\t", csmap_int_lower_bound(&gquiz1, 5+1).ref->first);
printf("\tELEMENT = %d\n", csmap_int_lower_bound(&gquiz1, 5+1).ref->second);
}
}
|