<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>STL on kamuszhou&#39;s blog</title>
    <link>https://ykyi.net/tags/stl/</link>
    <description>Recent content in STL on kamuszhou&#39;s blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 14 Feb 2014 06:47:36 +0000</lastBuildDate>
    <atom:link href="https://ykyi.net/tags/stl/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>为什么指针可以做为迭代器使用呢</title>
      <link>https://ykyi.net/?p=1207/</link>
      <pubDate>Fri, 14 Feb 2014 06:47:36 +0000</pubDate>
      <guid>https://ykyi.net/?p=1207/</guid>
      <description>&lt;p&gt;写了十几年代码了，今天才知道*为什么*指针可以做为迭代器使用。&lt;/p&gt;
&lt;p&gt;这是因为：&lt;/p&gt;
&lt;p&gt;首先，标准库里有这样一个template，它用来得到特定迭代器的相关特性:&lt;/p&gt;
&lt;pre class=&#34;brush:cpp&#34;&gt;namespace std {
       template &amp;lt;class T&amp;gt;
       struct iterator_traits {
           typedef typename T::value_type            value_type;
           typedef typename T::difference_type       difference_type;
           typedef typename T::iterator_category     iterator_category;
           typedef typename T::pointer               pointer;
           typedef typename T::reference             reference;
       };
   } &lt;/pre&gt;
&lt;p&gt;而对于指针，又有这样一个模板特例化，&lt;/p&gt;
&lt;pre class=&#34;brush:cpp&#34;&gt;namespace std {
       template &amp;lt;class T&amp;gt;
       struct iterator_traits&amp;lt;T*&amp;gt; {
           typedef T                          value_type;
           typedef ptrdiff_t                  difference_type;
           typedef random_access_iterator_tag iterator_category;
           typedef T*                         pointer;
           typedef T&amp;                         reference;
       };
   }&lt;/pre&gt;
&lt;p&gt;这个模板特例化的意思是：对于每一个指向类型T的指针，都被定义为一个可随机访问的迭代器。&lt;/p&gt;
&lt;p&gt;更详细的，参见文章：介绍iterator_trait &lt;a href=&#34;http://www.codeproject.com/Articles/36530/An-Introduction-to-Iterator-Traits&#34; style=&#34;line-height: 1.6em;&#34;&gt;&lt;a href=&#34;http://www.codeproject.com/Articles/36530/An-Introduction-to-Iterator-Traits&#34;&gt;http://www.codeproject.com/Articles/36530/An-Introduction-to-Iterator-Traits&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;copyright ykyi.net&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
