<?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>C&#43;&#43; on OK Komputer</title>
    <link>https://ok-komputer.github.io/tags/c&#43;&#43;/</link>
    <description>Recent content in C&#43;&#43; 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 14:31:39 +0800</lastBuildDate>
    <atom:link href="https://ok-komputer.github.io/tags/c++/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>C&#43;&#43; String</title>
      <link>https://ok-komputer.github.io/posts/cpp-string/</link>
      <pubDate>Mon, 09 Mar 2026 14:31:39 +0800</pubDate>
      <guid>https://ok-komputer.github.io/posts/cpp-string/</guid>
      <description>&lt;h2 id=&#34;创建&#34;&gt;创建&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;string&amp;gt;&lt;/span&gt;&lt;span class=&#34;cp&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 注意不是 &amp;lt;string.h&amp;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;c1&#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;string&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;s&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;string.data()&lt;/code&gt; 不保证末尾有空字符&lt;/li&gt;
&lt;li&gt;&lt;code&gt;string.c_str()&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;string.size()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;string.length()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;strlen(string.c_str())&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;注意！&lt;/p&gt;
&lt;p&gt;这三个函数（以及下面将要提到的 &lt;code&gt;find&lt;/code&gt; 函数）的返回值类型都是 &lt;code&gt;size_t&lt;/code&gt;（&lt;code&gt;unsigned long&lt;/code&gt;）．因此，这些返回值不支持直接与负数比较或运算，建议在需要时进行强制转换．&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;查找&#34;&gt;查找&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;string.find(str, pos = 0)&lt;/code&gt; 查找字符串中一个字符/字符串在含 &lt;code&gt;pos&lt;/code&gt; 之后第一次出现的位置，如果没有出现，则为 &lt;code&gt;string::npos&lt;/code&gt;（类型为 &lt;code&gt;size_t&lt;/code&gt;/&lt;code&gt;unsigned long&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;string.substr(pos, len)&lt;/code&gt; 返回从 &lt;code&gt;pos&lt;/code&gt; 位置开始截取最多 &lt;code&gt;len&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;string.insert(index, count, char)&lt;/code&gt; 在 &lt;code&gt;index&lt;/code&gt; 处连续插入 &lt;code&gt;count&lt;/code&gt; 个 &lt;code&gt;char&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;string.insert(index, str)&lt;/code&gt; 在 &lt;code&gt;index&lt;/code&gt; 处插入 &lt;code&gt;str&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;string.erase(index, count = string.length())&lt;/code&gt; 将从含 &lt;code&gt;index&lt;/code&gt; 开始的 &lt;code&gt;count&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;string.replace(pos, count, str)&lt;/code&gt; 将从含 &lt;code&gt;pos&lt;/code&gt; 后面的 &lt;code&gt;count&lt;/code&gt; 个字符替换为 &lt;code&gt;str&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;string.replace(first: iterator, last: iterator, str)&lt;/code&gt; 将以含 &lt;code&gt;first&lt;/code&gt; 开始，不含 &lt;code&gt;last&lt;/code&gt; 结束的字串替换为 &lt;code&gt;str&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <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>
