intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Lập trình hướng đối tượng - Chương 6

Chia sẻ: Đặng Kim Thạch | Ngày: | Loại File: PPT | Số trang:117

150
lượt xem
47
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo giáo trình Lập trình hướng đối tượng - Chương 6 : santard templates library

Chủ đề:
Lưu

Nội dung Text: Lập trình hướng đối tượng - Chương 6

  1. Chương 6 Standard Template Library 1 Lập trình hướng đối tượng -
  2. The Standard Template Library • Origins of STL • Generic programming • STL components • STL installation • STL header files • STL incompatibilities 2 Lập trình hướng đối tượng -
  3. The Standard Template Library • The Standard Template Library (STL) is a  general­purpose library of container classes  (such as vectors, lists, sets and maps) and  generic algorithms (such as searching, sorting  and merging).  • The chief difference between STL and other  C++ libraries is that STL containers and  algorithms can be "plugged" together in a  myriad of different useful ways.  3 Lập trình hướng đối tượng -
  4. Problems with libraries • Writing your own library of container  classes can be very frustrating because, even  if you are familiar with the best techniques,  there is rarely time to implement them.  • Buying a commercial library also has its  drawbacks:  – Incompatibility  – Inefficiency  – Unwieldy interfaces  4 Lập trình hướng đối tượng -
  5. Origins of STL • In view of these problems, the ANSI  committee for C++ standardisation sought a  standard set of container classes.  • Alexander Stepanov and Meng Lee of Hewlett  Packard Laboratories proposed STL, and in  1994 it was accepted as part of the C++  Standard Library.  5 Lập trình hướng đối tượng -
  6. Why STL? • STL was chosen as the ANSI standard for  several reasons:  – Efficiency  – Iterators  – Generic algorithms  – Function objects  – Allocators  6 Lập trình hướng đối tượng -
  7. Generic programming • Research into generic programming has  aimed to produce libraries of generic, or  reusable, software components.     7 Lập trình hướng đối tượng -
  8. Generic programming • Each iterator defines the operations that  are needed to access the contents of a  particular type of container.  • Class templates are used to define  containers and iterators, and function  templates are used to define generic  algorithms.  8 Lập trình hướng đối tượng -
  9. Generic programming • Not every generic algorithm and iterator  can be plugged together. STL prohibits  some combinations because certain  algorithms are only efficient when they  are used with certain types of containers.  9 Lập trình hướng đối tượng -
  10. STL components • Containers  • Generic algorithms  • Iterators  • Adaptors  • Function objects  • Allocators  10 Lập trình hướng đối tượng -
  11. Containers • A container is a data structure that stores a  collection of objects.  • STL defines two categories of containers:  sequential containers and associative  containers.  11 Lập trình hướng đối tượng -
  12. Sequential containers • Sequential containers store items in a  linear structure. The three sequential  container types are:  vector   deque   list   12 Lập trình hướng đối tượng -
  13. Associative containers • Associative containers store items in a  structure suited for fast associative lookup.  The four associative container types are:  set   multiset  map   multimap   13 Lập trình hướng đối tượng -
  14. Generic algorithms (I) • In traditional container class libraries, all of the  algorithms associated with a particular class are  implemented as member functions of that class.  • In contrast, most STL algorithms are written as  external functions that interact with container  classes via iterators.   14 Lập trình hướng đối tượng -
  15. Generic algorithms (II) • Each algorithm can operate on a variety  of containers.   • By plugging together different  combinations of algorithms and  containers you can create the specialised  components that are found in other  software libraries.  15 Lập trình hướng đối tượng -
  16. #include #include #include void main() { char string1[ ] = "Central Queensland"; int length = strlen(string1); // Reverse the array std::reverse(&string1[0], &string1[length]); // Check that the reversal was successful assert(strcmp(string1, "dnalsneeuQ lartneC") - == 0); Lập trình hướng đối tượng 16
  17. #include #include #include using namespace::std; // Return aVector containing the characters of aString // (not including the terminating null character). vector getVector(char* aString) { vector aVector; while (*aString != '\0') aVector.push_back(*aString++); return aVector; 17 Lập trình hướng đối tượng -
  18. int main(void) { vector vector1 = getVector("Central Queensland"); // Reverse the vector reverse(vector1.begin(), vector1.end()); // Check that the reversal was successful assert(vector1 == getVector("dnalsneeuQ lartneC")); return 0; 18 Lập trình hướng đối tượng -
  19. Iterators • Iterators are pointer­like objects that can be used to  visit the individual elements of a container.  • STL algorithms are written in terms of iterator  parameters, and STL containers provide the iterators  that can be plugged into those algorithms.  • Each STL container type C defines C::iterator as  an iterator type that can be used with type C  containers.  19 Lập trình hướng đối tượng -
  20. #include #include #include using namespace::std; // Return aVector containing the characters of aString // (not including the terminating null character). vector getVector(char* aString) { vector aVector; while (*aString != '\0') aVector.push_back(*aString++); return aVector; } 20 Lập trình hướng đối tượng -
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2