1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

45 6 0

Đ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

Nội dung

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

TÀI LIỆU LIÊN QUAN

w