- Mastering the C++17 STL
- Arthur O'Dwyer
- 217字
- 2021-07-08 10:20:25
The Container Zoo
In the previous two chapters, we introduced the ideas of iterators and ranges (Chapter 2, Iterators and Ranges) and the vast library of standard generic algorithms that operate on ranges of data elements defined by pairs of those iterators (Chapter 3, The Iterator-Pair Algorithms). In this chapter, we'll look at where those data elements themselves are allocated and stored. That is, now that we know all about how to iterate, the question gains urgency: what is it that we are iterating over?
In the Standard Template Library, the answer to that question is generally: We are iterating over some sub-range of the elements contained in a container. A container is simply a C++ class (or class template) which, by its nature, contains (or owns) a homogeneous range of data elements, and exposes that range for iteration by generic algorithms.
Topics we will cover in this chapter are:
- The notion of one object owning another (this being the essential difference between a container and a range)
- The sequence containers (array, vector, list, and forward_list)
- The pitfalls of iterator invalidation and reference invalidation
- The container adaptors (stack, queue, and priority_queue)
- The associative containers (set, map, and friends)
- When it is appropriate to provide a comparator, hash function, equality comparator, or allocator as additional template type parameters
- Docker and Kubernetes for Java Developers
- 騰訊iOS測試實踐
- 新手學Visual C# 2008程序設計
- 微信公眾平臺開發:從零基礎到ThinkPHP5高性能框架實踐
- Learning Salesforce Einstein
- Python算法從菜鳥到達人
- C語言程序設計同步訓練與上機指導(第三版)
- 常用工具軟件立體化教程(微課版)
- Multithreading in C# 5.0 Cookbook
- Spring MVC+MyBatis開發從入門到項目實踐(超值版)
- Java圖像處理:基于OpenCV與JVM
- Penetration Testing with the Bash shell
- jQuery從入門到精通(微課精編版)
- ASP.NET Core and Angular 2
- 用Go語言自制編譯器