Thư viện chuẩn C++ Standard Template Library (STL

45 6 0
Thư viện chuẩn C++ Standard Template Library (STL

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Thư viện chuẩn C++ Standard Template Library (STL) Thư viện khn mẫu chuẩn STL • Thư viện chuẩn C++ bao gồm 32 header file Thư viện khuôn mẫu chuẩn STL • Thư viện chuẩn C++ gồm phần: – Lớp string – Thư viện khuôn mẫu chuẩn – STL • Ngoại trừ lớp string, tất thành phần cịn lại thư viện khn mẫu • Tác giả STL Alexander Stepanov, mục đích ơng xây dựng cách thể tư tưởng lập trình tổng quát Thư viện khn mẫu chuẩn STL • Các khái niệm STL phát triển độc lập với C++ – Do đó, ban đầu, STL thư viện C++, mà chuyển đổi thành thư viện C++ – Nhiều tư tưởng dẫn đến phát triển STL cài đặt phần Scheme, Ada, C Thư viện khn mẫu chuẩn STL • Một số lời khuyên STL – STL thiết kế đẹp hiệu - khơng có thừa kế hay hàm ảo định nghĩa – Từ tư tưởng lập trình tổng quát dẫn tới "khối bản" (building block) mà kết hợp với theo đủ kiểu – Tuy làm quen với STL tốn khơng thời gian thành tiềm tàng xuất xứng đáng với thời gian đầu tư – Tóm lại – học sử dụng! • Bài giảng để giới thiệu phần nhỏ STL Giới thiệu STL • Ba thành phần STL – Các thành phần mạnh xây dựng dựa template • Container: cấu trúc liệu template • Iterator: giống trỏ, dùng để truy nhập phần tử liệu container • Algorithm: thuật tốn để thao tác liệu, tìm kiếm, xếp, v.v Giới thiệu Container • loại container – Sequence container – container chuỗi • cấu trúc liệu tuyến tính (vector, danh sách liên kết) • first-class container • vector, deque, list – Associative container – container liên kết • • • • cấu trúc phi tuyến, tìm phần tử nhanh chóng first-class container cặp khóa/giá trị set, multiset, map, multimap – Container adapter – tương thích container • stack, queue, priority_queue Các hàm thành viên STL • Các hàm thành viên container có – – – – – Default constructor, copy constructor, destructor empty max_size, size = < >= == != swap • Các hàm thành viên first-class container – begin, end – rbegin, rend – erase, clear Giới thiệu Iterator • Iterator tương tự trỏ – trỏ tới phần tử container – tốn tử iterator cho container • • • • * truy nhập phần tử trỏ tới ++ trỏ tới phần tử begin() trả iterator trỏ tới phần tử end() trả iterator trỏ tới phần tử đặc biệt chặn cuối container Các loại Iterator • Input (ví dụ: istream_iterator) – Đọc phần tử từ container, hỗ trợ ++,+= (chỉ tiến) • Output (ví dụ: ostream_iterator) – Ghi phần tử vào container, hỗ trợ ++,+= (chỉ tiến) • Forward (ví dụ: hash_set iterator) – Kết hợp input iterator output iterator – Multi-pass (có thể duyệt chuỗi nhiều lần) • Bidirectional (Ví dụ: list iterator) – Như forward iterator, lùi ( ,-=) • Randomaccess (Ví dụ: vector iterator) – Như bidirectional, cịn nhảy tới phần tử tùy ý remove, remove_if, remove_copy remove_copy_if • remove – remove( iter1, iter2, value); – Bỏ phần tử có giá trị value khoảng (iter1 - iter2) theo cách sau: • Chuyển phần tử có giá trị value xuống cuối • khơng thay đổi kích thước container thực xóa phần tử – Trả iterator tới kết thúc “mới” container – phần tử sau kết thúc không xác định remove, remove_if, remove_copy remove_copy_if • remove_copy – remove_copy(iter1, iter2, iter3, value); • khoảng iter1-iter2, chép phần tử khác value vào iter3 (output iterator) • remove_if – giống remove • trả iterator tới phần tử cuối • bỏ phần tử mà hàm trả true remove_if(iter1,iter2, function); • phần tử truyền cho function, hàm trả giá trị bool remove, remove_if, remove_copy remove_copy_if • remove_copy_if – giống remove_copy remove_if remove_copy_if(iter1, iter2, iter3, function); Các thuật tốn tốn học • random_shuffle(iter1, iter2) – xáo trộn phần tử khoảng cách ngẫu nhiên • count(iter1, iter2, value) – trả số lần xuất value khoảng • count_if(iter1, iter2, function) – đếm số phần tử làm function trả true • min_element(iter1, iter2) – trả iterator tới phần tử nhỏ • max_element(iter1, iter2) – trả iterator tới phần tử lớn Các thuật toán tốn học • accumulate(iter1, iter2) – trả tổng phần tử khoảng • for_each(iter1, iter2, function) – Gọi hàm function cho phần tử khoảng – không sửa đổi phần tử • transform(iter1, iter2, iter3, function) – gọi function cho phần tử khoảng iter1iter2, kết ghi vào iter3 Các thuật tốn tìm kiếm xếp • find(iter1, iter2, value) – trả iterator tới lần xuất (trong khoảng) value • find_if(iter1, iter2, function) – find – trả iterator function trả true • sort(iter1, iter2) – xếp phần tử theo thứ tự tăng dần • binary_search(iter1, iter2, value) 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 37 // Fig 21.31: fig21_31.cpp // Standard library search and sort algorithms #include fig21_31.cpp (1 of 4) using std::cout; using std::endl; #include #include // algorithm definitions // vector class-template definition bool greater10( int value ); // prototype int main() { const int SIZE = 10; int a[ SIZE ] = { 10, 2, 17, 5, 16, 8, 13, 11, 20, }; std::vector< int > v( a, a + SIZE ); std::ostream_iterator< int > output( cout, " " ); cout ::iterator location; location = std::find( v.begin(), v.end(), 16 ); 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 38 if ( location != v.end() ) cout

Ngày đăng: 12/12/2022, 10:12

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan