Skip to content

Commit ab47f2c

Browse files
hot fix: add mermaid
1 parent 58d4d67 commit ab47f2c

2 files changed

Lines changed: 22 additions & 11 deletions

File tree

scripts/build.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ function generateVolumeConfig(vol: Volume, absSiteDir: string, absSrcDir: string
135135

136136
return `import { defineConfig } from 'vitepress'
137137
import { cppTemplateEscapePlugin } from '${relPlugins}/escape-cpp-templates'
138+
import { mermaidPlugin } from '${relPlugins}/mermaid-plugin'
138139
import { viteCppEscape } from '${relPlugins}/vite-escape-cpp'
139140
140141
export default defineConfig({
@@ -166,7 +167,7 @@ export default defineConfig({
166167
markdown: {
167168
lineNumbers: true,
168169
theme: { light: 'github-light', dark: 'github-dark' },
169-
config(md) { cppTemplateEscapePlugin(md) },
170+
config(md) { cppTemplateEscapePlugin(md); md.use(mermaidPlugin) },
170171
},
171172
172173
themeConfig: {
@@ -194,6 +195,7 @@ function generateRootConfig(absSiteDir: string, absSrcDir: string): string {
194195
import { navZh } from '${relNav}'
195196
import { buildSidebar } from '${relSidebar}'
196197
import { cppTemplateEscapePlugin } from '${relPlugins}/escape-cpp-templates'
198+
import { mermaidPlugin } from '${relPlugins}/mermaid-plugin'
197199
import { viteCppEscape } from '${relPlugins}/vite-escape-cpp'
198200
199201
export default defineConfig({
@@ -225,7 +227,7 @@ export default defineConfig({
225227
markdown: {
226228
lineNumbers: true,
227229
theme: { light: 'github-light', dark: 'github-dark' },
228-
config(md) { cppTemplateEscapePlugin(md) },
230+
config(md) { cppTemplateEscapePlugin(md); md.use(mermaidPlugin) },
229231
},
230232
231233
themeConfig: {

tutorial/expert/01-qtbase/02-cow-container-practice-expert.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -292,16 +292,25 @@ const 版本不触发:
292292
293293
### 3.5 const 正确性——你的性能就藏在这里
294294
295-
我们前面看了三个容器的源码,它们遵循完全一样的模式:非 const 方法调 detach(),const 方法不调。这意味着 `const` 不只是一个编译器检查——它在运行时直接决定了你的代码会不会触发一次深拷贝。先看一张总结表
295+
我们前面看了三个容器的源码,它们遵循完全一样的模式:非 const 方法调 detach(),const 方法不调。这意味着 `const` 不只是一个编译器检查——它在运行时直接决定了你的代码会不会触发一次深拷贝。先看一张总结图
296296
297-
| ✓ 不触发 detach | ✗ 触发 detach(共享时) |
298-
|---|---|
299-
| `constData()` | `data()`(非 const) |
300-
| `data()` const | `begin()` / `end()` |
301-
| `at(i)` | `operator[]`(非 const) |
302-
| `begin()` const / `end()` const | range-for(`auto& x : c`) |
303-
| `cbegin()` / `cend()` | |
304-
| `operator[]` const | |
297+
```mermaid
298+
flowchart LR
299+
subgraph 安全["✓ 不触发 detach"]
300+
S1["constData()"]
301+
S2["data() const"]
302+
S3["at(i)"]
303+
S4["begin() const\nend() const"]
304+
S5["cbegin()\ncend()"]
305+
S6["operator[] const"]
306+
end
307+
subgraph 危险["✗ 触发 detach(共享时)"]
308+
D1["data() 非const"]
309+
D2["begin() / end()"]
310+
D3["operator[] 非const"]
311+
D4["range-for\n(auto& x : c)"]
312+
end
313+
```
305314
306315
左边这些是安全的——不会触发 detach,零额外开销。右边这些在容器被共享时会触发一次完整的深拷贝。几个实际场景:
307316

0 commit comments

Comments
 (0)