Download presentation
Presentation is loading. Please wait.
Published byDebra Norris Modified over 10 years ago
1
1 Introduction to Standard Template Library (STL) Wenguang Wang and Yanping Zhao March 20, 2000
2
2 What Is STL? A new C++ Library, ANSI standard Support complex data structures –Vector (array), list, string, hash, set, map, queue, stack, priority queue... Support various algorithms –Searching, sorting, heap, merging, copying, transforming…
3
3 Why STL was developed? Some basic data structures are used everyday in your programs Programming them from the scratch is time consuming and error-prone Most of operations on these structures can be standardized
4
4 Why we use STL? More reliable and efficient implementations Automatic memory management Constructing complex data structures easily Saving programming time and efforts
5
5 Where are STL and resources? GNU g++ on skorpio, ultra*… Visual C++ Wenguang Wang’s home page –http://www.cs.usask.ca/grads/wew036/stl Standard Template Library Programmer’s Guide –http://www.sgi.com/Technology/STL/
6
6 Fundamental Elements in STL? Containers (data structures) –vectordynamic size –listdoubly linked list –string, hash Algorithms –sorting, heap manipulation Iterators (pointers) –A bridge to connect algorithms and containers –ExampleExample
7
7 How to Use STL? (example) On Unix –GNU g++ 2.7.0 and later version On Windows –Visual C++ 5.0 and later version –not fully supported even in Visual C++ 6.0 no hash table no rope more? Example
8
8 Why I am here? I learned STL two weeks ago I never heard of STL before After a five minutes STL tour, I can use it ! I found that STL helped me a lot in programming I want to share it with you
9
9 Vector -- Advantages Data type –basic type: integer, double, pointer, … –user-defined structures and classes Dynamic size
10
int *array = malloc(size*sizeof(int));//allocate int *temp = realloc(array, new_size*sizeof(int)); if (temp) array = temp; //reallocate free(array); // deallocate Estimate #define SIZE 2000 Count Count = 0; while(not end) count++; How to get the size of the array? vector vec; vec.push_back(i);
11
11 Vector -- Operations Property operations –[ ], size, empty Iterator operations –begin, end Manipulation operations –push_back, pop_back, insert, erase 001234567 size=8 beginendv[3]
12
#include typedef vector VecInt; void main(){ VecInt vInt; VecInt::iterator it; vInt.push_back(0); vInt.push_back(1); for (it=vInt.begin(); it!=vInt.end(); it++) cout << *it << endl; for (int i=0; i<vInt.size(); i++) cout << vInt[i] << endl; it = vInt.insert(vInt.begin(), 2); vInt.erase(it); }
13
13 List -- Operations Property operations –size, empty –back, front Iterator operations –begin, end Manipulation operations –push_back, pop_back, push_front, pop_front –insert, erase
14
#include typedef list ListInt; void main(){ ListInt lInt; ListInt::iterator it; // stack lInt.push_front(0); lInt.push_front(1); cout << lInt.front() << endl; lInt.pop_front(); lInt.pop_front(); // queue lInt.push_back(2); lInt.push_back(3); cout << lInt.front() << endl; lInt.pop_front(); lInt.pop_front(); // iterator for (it=lInt.begin(); it!=lInt.end(); it++) cout << *it << endl; }
15
15 Algorithm -- Heap Data structure: vector or C++ array make_heap pop_heap push_heap 41753689 95843671 85743619 98753614
16
#include typedef vector VecInt; void main(){ VecInt vInt(4); int i; vInt[0]=7; vInt[1]=4; vInt[2]=9; vInt[3]=1; make_heap(vInt.begin(), vInt.end()); vInt.push_back(3); push_heap(vInt.begin(), vInt.end()); pop_heap(vInt.begin(), vInt.end()); cout << vInt.back() << endl; vInt.pop_back(); }
17
17 User-defined Data Type struct Event { long timestamp; int type; }; typedef Event* PEvent; typedef vector VecEvent; typedef list ListPEvent;
18
18 User-defined Data Type (cont.) class Page { int page_num; int modify_flag; int reference_cnt; }; typedef list ListPage; typedef ListPage* PListPage; typedef vector VecPListPage; What is the structure of VecPListPage ? page
19
19 Iterator Similar to pointer –*it Iterator for list (bidirectional iterator) –++it, it++, --it, it-- Iterator for vector (random access iterator) –++it, it++, --it, it-- –it+n, itBegin-itEnd
20
20 More details in: http://www.cs.usask.ca/grads/wew036/stl
21
21
22
#include void main(void) { vector vInt; vector ::iterator begin, end; begin = vInt.begin(); end = vInt.end(); sort(begin, end); }
23
#include //not iostream.h! #include #ifdef _MSC_VER // for Visual C++ using namespace std; #endif
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.