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

Summary

In this chapter, we've learned that traversal is one of the most fundamental things you can do with a data structure. However, raw pointers alone are insufficient for traversing complicated structures: applying ++ to a raw pointer often doesn't "go on to the next item" in the intended way.

The C++ Standard Template Library provides the concept of iterator as a generalization of raw pointers. Two iterators define a range of data. That range might be only part of the contents of a container; or it might be unbacked by any memory at all, as we saw with getc_iterator and putc_iterator. Some of the properties of an iterator type are encoded in its iterator category--input, output, forward, bidirectional, or random-access--for the benefit of function templates that can use faster algorithms on certain categories of iterators.

If you're defining your own container type, you'll need to define your own iterator types as well--both const and non-const versions. Templates are a handy way to do that. When implementing your own iterator types, avoid the deprecated std::iterator, but consider boost::iterator_facade.

主站蜘蛛池模板: 台中县| 高唐县| 南岸区| 彰化市| 镇原县| 措美县| 柘城县| 宣化县| 海丰县| 鄄城县| 泾源县| 遂川县| 普陀区| 四川省| 五台县| 恩平市| 健康| 安义县| 贵阳市| 庐江县| 民勤县| 安达市| 四川省| 黔南| 龙口市| 原阳县| 玉溪市| 睢宁县| 凌源市| 胶南市| 陆川县| 柘荣县| 武鸣县| 峨山| 温宿县| 安顺市| 南昌县| 安远县| 梁平县| 宣恩县| 荥经县|