官术网_书友最值得收藏!

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
主站蜘蛛池模板: 尼木县| 红安县| 莲花县| 靖远县| 黄冈市| 久治县| 通榆县| 兴和县| 汽车| 集安市| 西丰县| 龙门县| 张家界市| 定陶县| 洛阳市| 祁东县| 海阳市| 梅河口市| 通化县| 仁寿县| 衡山县| 凤城市| 天峻县| 巢湖市| 定西市| 鄂尔多斯市| 通城县| 车致| 夏邑县| 石棉县| 延庆县| 根河市| 临汾市| 凤城市| 淮滨县| 峡江县| 民权县| 鹤峰县| 神农架林区| 沈丘县| 云安县|