11-09-30 继续无所事事

本文介绍了C++中标准模板库(STL)的一些实用技巧,包括如何正确使用文件结束标记eof,迭代器与指针的区别及转换方法,以及在不同容器中使用erase方法的注意事项。

梦游 了将近一周,结果直接就十一了,又放假,又要去玩,这还学不学习了啊。。。妈妈的。。。


似乎也就昨天到现在给师兄写代码还算点正事,三天不练手生啊,eof 都能出问题,天天再不认真点,啥都忘光了。

1.

eof :C++中的  file.eof()  只有当错误真正的发生了之后,才会返回 TRUE,所以循环的时候,可以用 file.peek() 来诱发这个错误。


2:

迭代器与指针:迭代器应该算是指针的升级版吧,如果要将迭代器转换为指针,需要 解引用之后再取地址 。即  p = & ( * iter ) ,但是貌似对于复杂一点的结构,这个就不好使了,似乎要重载 * 操作符吧,

另外,在list ,  map ,  set  等非连续容器中,用 erase 删除元素时,语法 应该是   iter = container.erase(iter)  或者  container.erase(iter++)  ,第一种是利用 erase 的返回值,指向下一个元素,第二种是在将在函数调用前,使iter自加,来获取下一个元素位置。对于 vector ,  deque 之类的连续存储容器,只能用方法一。

3:

STL 中的容器的嵌套问题,可以,dev c++能通过


### 如何在 markdown-it 中实现自定义解析规则 #### 创建自定义解析器函数 为了向 `markdown-it` 添加新的解析规则,需创建一个解析器函数。此函数接收三个参数:tokens列表、索引位置和选项对象。 ```javascript function myCustomRule(state, silent) { let pos = state.pos; // 查找特定模式并处理匹配项 while (pos < state.src.length) { if (state.src[pos] === '<' && state.src.slice(pos, pos + 10).toLowerCase() === "<references>") { const tagEndPos = state.md.helpers.parseTagEnd(state.src, pos); if (!silent) { // 不是静默模式,则实际插入token state.push({ type: 'my_custom_open', level: state.level++ }); state.push({ type: 'inline', content: state.src.slice(pos + 11, tagEndPos), children: [] }); state.push({ type: 'my_custom_close', level: --state.level }); } state.pos = tagEndPos + 1; return true; } ++pos; } return false; } ``` #### 注册新规则到 markdown-it 实例 完成上述解析逻辑后,下一步就是将其注册至 `markdown-it` 的核心解析流程中。这可以通过调用 `.core.ruler.push()` 方法来达成[^2]。 ```javascript const md = require('markdown-it')(); // 向 core 阶段添加规则 md.core.ruler.push('my_custom_rule', myCustomRule); module.exports = md; ``` #### 使用插件机制扩展功能 除了直接操作内核外,还可以利用官方提供的插件接口封装更复杂的业务逻辑。这种方式不仅提高了代码复用率,也便于维护管理[^4]。 ```javascript function referencesPlugin(md) { function parseReferences(state, startLine, endLine, silent) { /* ... */ } md.inline.ruler.before('linkify', 'parse_references', parseReferences); } // 应用插件 md.use(referencesPlugin); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值