c++
文章平均质量分 52
带着你的名字
这个作者很懒,什么都没留下…
展开
-
模板形式的单例类 (使用了智能指针)
实现一个模板形式的单例类,对于任意类型的类经过Singleton的处理之后,都能获取一个单例对象,并且可以传递任意参数并且还使用了智能指针,把生成的单例对象托管给智能指针,从而实现自动回收单例对象的资源此外,如果需要一个放在静态成员区的对象供其他类使用,又不希望修改原有的类的代码,这时候可以通过该模板套一层壳,形成单例对象。头文件template_singleton.hpp#include <iostream>#include <string>#include <原创 2021-06-12 15:39:10 · 385 阅读 · 0 评论 -
STL空间配置器之 allocate
我们知道new和delete管理对象时其实都内含两阶段操作,一个是对内存空间的操作,使用operator new和operator delete来申请和释放内存空间,一个是调用构造函数和析构函数来构造和销毁对象。类似的STL也需要两阶段的操作,不过为了精密分工,STL把两个阶段拆开了。对于内存的管理,STL会使用空间配置器(allocator)的**allocate()函数来分配足够大、原始的、未命名的内存;调用deallocate()**函数来回收内存,其中比较复杂的是allocate()函数,为了解原创 2021-06-08 13:51:47 · 341 阅读 · 0 评论 -
c++primer第五版 文本查询程序再探
1. 项目需求书上内容的实现,支持多种查询方式,包括:单词查询,用于得到包含给定单词的所有行逻辑非查询,使用~运算符,得到不包含给定单词的所有行逻辑或查询,使用|运算符,返回匹配两个条件中任意一个的行逻辑与查询,使用&运算符,返回匹配两个条件的行组合查询,可以混合使用上面的运算符以及圆括号,符号优先级按照C++通用的优先级对复杂表达式求值输出内容:输入的查询语句,圆括号来表示查询被解释和执行的先后次序;按照查询结果中行号的升序来打印行号和结果,并且每一行只显示一次2. 主原创 2021-05-28 19:32:15 · 401 阅读 · 0 评论 -
TinyXML2的基本使用之遍历和文本提取
XML是一种标记语言,被广泛用来作为跨平台之间交互数据的形式,主要针对数据的内容,通过不同的格式化描述手段(XSLT,CSS等)可以完成最终的形式表达(生成对应的HTML,PDF或者其他的文件格式)。而TinyXML2是一个开源、简单、小巧、高效的C++ XML解析器,由于XML是由节点组成的,节点之间是树形结构,有根节点、父节点、子节点、兄弟节点等。所以可以把其当做树来处理和使用。下面我们来看一下在C++中使用TinyXML2对XML文件进行遍历和提取信息的方法。1.TinyXML2的相关数据类型原创 2021-05-21 22:53:44 · 1626 阅读 · 0 评论 -
C++ 单例模式的自动释放
单例模式是为了确保某个类只能创建一个对象而设计的。当一个程序的某个类型只允许有一个实例的时候使用。一般采用动态分配的方式来生成单例对象,这个时候C++程序员就需要考虑内存回收的问题了,所以为了避免在使用单例模式时忘记回收资源而造成内存泄漏的问题,在实现单例模式的时候就使其可以自动被回收。不带自动释放的单例模式的实现与销毁我们先来复习一下没有自动回收机制的单例模式的实现和销毁。单例模式的实现:将构造函数私有化在类中定义一个静态的指向本类型的指针变量定义一个返回值为该类的指针的静态成员函数,在类原创 2021-05-20 23:25:19 · 1014 阅读 · 1 评论 -
自己实现 写时复制(cow)模式 的c++ string类型 使用了设计模式之代理模式
实现COW(写时复制)模式的String,让其operator[]能够区分出读写操作,从而避免只读时也修改引用计数。使用了设计模式中的 代理模式 来实现下标运算符和赋值运算符的重载,从而完整的实现COW(写时复制)。代码实现如下:my_string.h#ifndef __MY_STRING_H__#define __MY_STRING_H__#include <string.h>#include <iostream>using namespace std;cl原创 2021-05-19 23:14:03 · 1076 阅读 · 2 评论