ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
ได้พิมพ์โดยนพดล หงสกุล ได้เปลี่ยน 8 ปีที่แล้ว
1
Collections
2
Data structures Data Structures ( โครงสร้างข้อมูล ) เกิดจากการ นำข้อมูลขั้นพื้นฐานที่แบ่งแยกไม่ได้ (atomic data type) เช่น int, char, double และ enum มา ประกอบเข้าด้วยกันกลายเป็นข้อมูลที่มี โครงสร้างใหญ่ขึ้น ซับซ้อนมากขึ้น วิธีการนำ ข้อมูลมาประกอบเข้าด้วยกัน ก่อให้เกิด โครงสร้างข้อมูลในรูปแบบต่างๆ เช่น List, Linked List, Stack, Queue, Tree, Graph, etc.
3
Abstract data type (ADT) Abstract data type (ADT) คือ ชนิดข้อมูลที่มีการ นิยามถึงพฤติกรรม (behavior) หรือวิธีการ นำไปใช้ มากกว่ารูปแบบข้อมูลที่เก็บอยู่ (representation) ADT นี้เป็นหัวใจสำคัญของวิธีการเขียนโปรแกรม แบบวัตถุ นั่นคือ เมื่อเราสร้างคลาสวัตถุ เรา จะต้องนึกถึง method ที่จะใช้ได้กับวัตถุในคลาส นั้นๆ
4
Behavior and representation Integer – Behavior (+, -, *, /, %,, >=, etc) – Representation (1’s complement, 2’s complement, sign magnitude, etc) Double – Behavior (+, -, *, /,, >=, etc) – Representation (pure notation, excess or biased notation, etc)
5
Behavior and representation Alphanumeric (character) – Behavior (display, >, >=, <, <=, etc) – Representation (Unicode, ASCII, EBCDIC, etc) String – Behavior (concat, extract, >, >=, <, <=, etc) – Representation (array of character, etc)
6
Behavior and representation Rational – Behavior (add, subtract, multiply, divide, toString) – Representation ( int, int) Student – Behavior (getID, getName, getCredits, setID, setName, setCredits, toString) – Representation (int, string, double)
7
Collections Vector, Stack, Queue, Map, Set, etc Each of these classes contains a collection of values of some simpler type. Learning how to use Learning how to implement efficiently (underlying algorithms and data structures)
8
Sequential Containers vectorFlexible-size array dequeDouble-ended queue. listDoubly linked list. forward_listSingly linked list. arrayFixed-size array. stringA specialized container, similar to vector, that contains characters
9
Container Adaptors stackBy default stack is implemented in terms of deque. queueBy default queue is implemented in terms of deque priority_queuepriority_queue is implemented on a vector.
10
Associative Containers Elements Ordered by Key mapAssociative array; holds key-value pairs setContainer in which the key is the value multimapMap in which a key can appear multiple times multisetSet in which a key can appear multiple times
11
Associative Containers Unordered collections unordered_mapMap organized by hash function unordered_setSet organized by hash function unordered_multimapHashed map; keys can appear multiple times unordered_multisetHashed set; keys can appear multiple times
12
Vector (ArrayList in Java) #include using std::vector; vector ivec; vector student; vector > file;// C++ 11 vector > file; // Old style
13
Defining and Initializing vectors vector svec;// svec is empty vector ivec;// ivec is empty vector ivec2(ivec);// copy ivec to ivec2 vector ivec3 = ivec;// copy ivec to ivec3 vector svec(ivec2)// error: svec holds // string
14
List Initializing a vector vector articles = {“a”, “an”, “the”}; vector v1{“a”, “an”, “the”}; vector v1(“a”, “an”, “the”);//error
15
Creating a specified number of Elements // ten int elements, each initialized to -1 vector ivec(10, -1); // ten strings, each element is “hi!” vector svec(10, “hi!”); // ten int elements, each initialized to 0 vector ivec(10); // ten strings, each an empty string vector svec(10); vector vi = 10;// Error: must use direct initialization
16
List Initializer or Element Count? vector v1(10); // v1 has ten elements with value 0 vector v2{10}; // v2 has one element with value 0 vector v3(10, 1); // v3 has ten elements with value 1 vector v4{10, 1}; // v4 has two elements with value 10 and 1
17
List Initializer or Element Count? vector v5{“hi”}; // v5 has one element vector v6(“hi”); // error vector v7{10}; // v7 has ten elements vector v8{10, “hi”}; // v8 has ten elements with // value hi
18
Adding elements to a vector vector v2; for (int i = 0; i != 100; ++i) v2.push_back(i); string word; vector text; while (cin >> word) { text.push_back(word); }
19
Other vector operation vector v{1, 2, 3, 4, 5, 6, 7, 8, 9}; for (auto &i : v) // for each element in v i *= i; // square the element value for (auto i : v)// for each element in v cout << i << “ “;// print the element cout << endl;
20
Vector Operations v.empty() // Return true if v is empty v.size() // Return the number of element v.push_back(t) // Add an element with value t v[n] // Return a reference to the element // at position n in v v1 = v2// v1 = {a, b, c…} v1 == v2 v1 != v2, >=
21
vector scores(11, 0); unsigned grade; while (cin >> grade) { if (grade <= 100) ++scores[grade/10]; } Input: 42 65 95 100 39 67 95 76 88 76 83 92 76 93 Output: 0 0 0 1 1 0 2 3 2 4 1
22
vector ivec; for (decltype (ivec.size()) ix = 0; ix != 10; ++ix) ivec[ix] = ix ; // disaster: ivec has no elements for (decltype (ivec.size()) ix = 0; ix != 10; ++ix) ivec[ix].push_back(ix) ; // ok adds a new element
23
vector ivec; // empty vector cout << ivec[0]; // error: ivec has no element vector ivec2(10);// vector with ten element cout << ivec2[10]; // error: ivec2 has element 0..9
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.