비록 모작이지만 모두 이해완료해서 기분좋다


List 소스는 너무길어서 안올린당


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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
    LIST CONSTRUCTOR
    1.
    var list = new std.List();
    list.push(1);
    list.push(2); => List: {1, 2}
    2.
    var list = new std.List(5, 1);
    => List: {1, 1, 1, 1, 1}
    3.
    var list2 = new std.List(list);
    => List: {copy}
    4/
     */
    var list = new std.List([1234]);
 
 
 
    /**
     * LIST ACCESS
     */
    console.log(list.size());   // print 4
    console.log(list.front());  // print 1   List: {1, 2, 3, 4}
    console.log(list.back());   // print 4   List: {1, 2, 3, 4}
 
 
    /**
     * LIST INPUT / OUTPUT
     */
    list.push_front(3);         //     List: {3, 1, 2, 3, 4}
    console.log(list.front());  // print 3
 
    list.push_back(7);          //     List: {3, 1, 2, 3, 4, 7}
    console.log(list.back());   // print 7
 
    list.pop_front();           //     List: {1, 2, 3, 4, 7}
    console.log(list.front());  // print 1
 
    list.pop_back();            //     List: {1, 2, 3, 4}
    console.log(list.back());   // print 4
 
    list.push(3);               //     List: {1, 2, 3, 4, 3}
    console.log(list.back());   // print 3
 
 
    /**
     * ITERATOR
     */
    // List: {1, 2, 3, 4, 3}
    var it = list.begin();
    console.log(it.value);      // print 1
 
    // C++ ++ === next()
    it = it.next();
    console.log(it.value);      // print 2
 
    // C++ -- === prev()
    it = it.prev();
    console.log(it.value);      // print 1
 
 
    /**
     * ITERATOR FOR
     */
 
    // FOR
    forvar i = list.begin(); i != list.end();  i = i.next() )
    {
        console.log(i.value);   // print 1, 2, 3, 4, 3
    }
 
    // FOR-Reverse
    forvar i = list.end().prev() ; i != list.end();  i = i.prev() )
    {
        console.log(i.value);   // print 3, 4, 3, 2, 1
    }
 
 
    /**
     * ITERATOR ADVANCE
     */
 
    // List: {1, 2, 3, 4, 3}
    var it = list.begin().advance(2);
    console.log(it.value);     // print 3
 
    it = it.advance(-1);
    console.log(it.value);     // print 2
 
 
    /**
     * ITERATOR ERASE
     */
    var it = list.begin();
    list.erase(it, it.advance(1));
    forvar i = list.begin(); i != list.end();  i = i.next() )
    {
        console.log(i.value);   // print  3, 4, 3
    }
 
 
    // CLEAR
    list.clear();
cs