<?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 OK Komputer</title>
    <link>https://ok-komputer.github.io/tags/stl/</link>
    <description>Recent content in STL on OK Komputer</description>
    <image>
      <title>OK Komputer</title>
      <url>https://avatars.githubusercontent.com/u/226872255?v=4</url>
      <link>https://avatars.githubusercontent.com/u/226872255?v=4</link>
    </image>
    <generator>Hugo -- 0.151.0</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 09 Mar 2026 07:54:32 +0800</lastBuildDate>
    <atom:link href="https://ok-komputer.github.io/tags/stl/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>C&#43;&#43; Vector</title>
      <link>https://ok-komputer.github.io/posts/cpp-vector/</link>
      <pubDate>Mon, 09 Mar 2026 07:54:32 +0800</pubDate>
      <guid>https://ok-komputer.github.io/posts/cpp-vector/</guid>
      <description>&lt;h2 id=&#34;创建-vector&#34;&gt;创建 vector&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#include&lt;/span&gt; &lt;span class=&#34;cpf&#34;&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 创建一个初始空间为 3 的 vector，元素默认值为 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 创建一个初始空间为 3 的 vector，元素默认值是 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 创建一个 v2 的拷贝 v3，元素内容和 v2 一样
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 创建一个 v3 的拷贝到 v4，内容是 { v3[1], v3[2] }，包前不包后;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;vector&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;v3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;begin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;元素访问&#34;&gt;元素访问&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vector.at(pos)&lt;/code&gt; 返回 &lt;code&gt;vector&lt;/code&gt; 中下标为 &lt;code&gt;pos&lt;/code&gt; 的引用&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector[pos]&lt;/code&gt; 返回 &lt;code&gt;vector&lt;/code&gt; 中下标为 &lt;code&gt;pos&lt;/code&gt; 的引用，不执行越界检查&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector.front()&lt;/code&gt; 返回首元素的引用（&lt;code&gt;vector.begin()&lt;/code&gt; 是迭代器，和这个不同）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector.back()&lt;/code&gt; 返回末元素的引用 （&lt;code&gt;vector.end()&lt;/code&gt; 是迭代器，没有元素，和这个不同）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector.data()&lt;/code&gt; 返回首元素的指针（&lt;code&gt;vector&lt;/code&gt; 的空间是连续的）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;迭代器&#34;&gt;迭代器&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;vector.begin()&lt;/code&gt; 返回首元素的迭代器，&lt;code&gt;*begin = front&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector.end()&lt;/code&gt; 返回末元素的迭代器，没有元素&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector.rbegin()&lt;/code&gt; 返回指向逆向数组的首元素的迭代器，可以理解为正向容器的末元素&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vector.rend()&lt;/code&gt; 返回指向逆向数组末元素后一位置的迭代器，对应容器首的前一个位置，没有元素&lt;/li&gt;
&lt;li&gt;上述迭代器名前加上一个 &lt;code&gt;c&lt;/code&gt; 为只读迭代器&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;长度和容量&#34;&gt;长度和容量&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;注意，&lt;code&gt;vector&lt;/code&gt; 的长度（size）指有效元素数量，而容量（capacity）指分配的内存长度&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
