![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 79
zy__
这个作者很懒,什么都没留下…
展开
-
C++ string 的使用
string 写复制一个简单的例子,开始时,s2用s1来初始化,在对字符串做任何改变之前s1和s2指定的是同一物理地址,但对s1进行了修改后我们发现地址发生了变化。这时的s1和s2已经指向了不同的物理空间。只有当字符串发生改变时,才创建各自的拷贝,这种实现方式叫做写时复制。sample code 1sample1_result_pic原创 2014-09-05 12:26:03 · 732 阅读 · 0 评论 -
C++ pthread 信号量及detach的使用
通过一个简单的例子,总结一下pthread中信号量的使用方式以及使用pthread_detach和使用pthread_join的区别。以备以后查阅。涉及到的函数:int pthread_kill(pthread_t thread, int sig) :向线程发送一个信号,参数分别为线程ID和信号量。在线程内部可以对信号进行处理,当然也有一些系统默认的出来方式。比如发送信号SIGQU原创 2015-03-07 11:26:34 · 4024 阅读 · 0 评论 -
C++ pthread cond_wait 和 cond_broadcast的使用
一个简单的实例程序,说明pthread_cond_wait 和 pthread_cond_broadcast 的使用方式。函数定义:int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)int pthread_cond_broadcast(pthread_cond_t *cond)函原创 2015-03-12 22:23:14 · 4866 阅读 · 0 评论 -
C++ 大规模程序设计 之 全局名称空间
《大规模C++程序设计》 总结。对于大中型项目来说,全局变量,全局函数总是在所难免。而且让人又爱又恨。用的好省时省力,用的不好陷阱重重,程序无法维护。《大规模C++程序设计》书中总结了几种解决方式,这里把他们解决方式和实例代码保留在这里以便以后查用。原创 2015-04-09 09:56:25 · 865 阅读 · 0 评论 -
C++ 大规模程序设计 之 组件
概述组件是物理设计中的最小单位。 它主要的想法是把一定数量的内聚功能组织在一个物理的单元中,以达到轻松部署,轻松复用的目的。物理组件可能会包含一个或多个逻辑组件,也有可能会跨越多个类。但这些逻辑组件或类一定是在功能上内聚的。原创 2015-07-01 08:07:57 · 1042 阅读 · 0 评论 -
C++ 大规模程序设计 之 物理层次结构
在系统中物理组件间必然会存在着各种各样的联系(DependOn 关系)。良好的设计应该是接口短小,易于理解,易于使用和易于测试的。理清物理层次结构对于设计良好的系统是很有帮助的。易测试性设计质量设计的一个重要部分是易测试性设计,如果一个组件设计良好,那么用它构造测试用例也是比较容易的,同样它的易用性对于用户来说也是很好的,很多时候测试用例和用户使用的场景是一致的。这个和极限编程中测试驱动的想法是一致的原创 2015-07-07 08:59:55 · 2892 阅读 · 0 评论 -
C++ 大规模程序设计 之 层次化
层次化的主要目的还是为了设计出高质量的系统 + 易于理解 + 易于维护 + 易于测试 + 易于重用 = 少加班导致物理循环依赖的原因产生物理循环依赖的原因是多种多样的,书中列举了3种,但总结一下可能2种更合适一些。心理方面:在对原有系统开发新功能时,或修改问题时,信手拈来的习惯可能在不经意间造成循环依赖。技术方面:设计系统逻辑关系时,逻辑上的耦合导致了物理上的循环依赖。处理物理循环依原创 2015-07-15 09:10:46 · 3149 阅读 · 0 评论 -
C++ 释放vector中的元素
一个代码片段,用于清空vector中的元素。这个可以用在类的析构函数中,也修改一下也适用于其他容器。记录下来,以后可以直接使用。#include #include using namespace std;typedef struct Elem{ int _a;} Elem;int main(){ int i = 0; Elem* p = NULL;原创 2015-08-26 15:06:15 · 1033 阅读 · 0 评论 -
C++ socket shutdow 与 close 的使用
C++ socket shutdow 与 close 的使用原创 2015-11-04 22:19:20 · 4526 阅读 · 0 评论 -
C++ 大规模程序设计 之 包
概述包是将相关组件的集合聚集为一个逻辑上内聚的物理单位。它是一个自顶向下设计的自然结果,充当了体系结构设计者的一个抽象和开发者的一个分区。原创 2015-12-28 14:59:58 · 985 阅读 · 0 评论 -
C++ 大规模程序设计 之 绝缘
概述绝缘与封装的过程类似,目的是要消除不必要的编译时的耦合的过程。绝缘 是个物理过程,它的逻辑相似物便是 封装。原创 2015-12-20 12:11:35 · 670 阅读 · 0 评论 -
C++ const
目的: 值代替。 预处理宏定义的缺点: 只做文本替换,并没有类型检查,这样会产生风险。 内存存储形式,常量折叠常量的定义会保存在符号表中,可折叠的常量像宏一样,在预编译阶段对常量的引用一律被替换为常量所对应的值。但在运行时常量也是会被分配内存空间的。下面的程序可以说明。 int main() { const in原创 2016-11-24 09:32:57 · 1256 阅读 · 0 评论 -
C++ 用类封装 pthread
一个项目中需要用到pthread,发现把它封装到类中使用起来更加的方便。这里保存了实例代码,以备以后使用。头文件中定义了ThreadBase类,它包含了线程基本的一些接口,start() join() 和quit()run()为接口函数,使派生类可以实现自己的工作函数。thread_base.h#ifndef _THREAD_BASE_H_#define _原创 2015-02-28 14:29:40 · 3748 阅读 · 0 评论 -
C++ time 的使用
time 是使用比较广泛的一个的使用比较原创 2014-10-14 11:24:01 · 831 阅读 · 0 评论 -
设计模式 - 状态模式 C++
状态模式是产生一个可以改变其类的对象,通过前端对象的变化来使后端工作的不同对象履行其职责。通过改变一个对象的状态,使它的工作对象也发生变化。如果一个对象在决定它要做什么之前总是要对当前的状态做很多的判断,那么就可以考虑使用状态模式。一个坏的例子。为什么是个坏例子: 在work() 函数中,每次都要对当前worker的状态进行检原创 2014-09-19 16:29:56 · 924 阅读 · 0 评论 -
设计模式 - 命令模式 C++
命令模式的代码很简单,主要目的用于消除对象间的耦合关系。它可以消除调用者与被调用者位置间的关系。它的特点是允许向一个函数或对象传递以个动作, 或者是一系列的动作。它可以看做是回调函数的替代产物,当把一个对象对外提供的服务用一个命令类进行了封装后,所有需要这个类服务的其他调用的部分只需要和这个命令类建立关系即可。命令模式示例:原创 2014-09-15 09:10:48 · 729 阅读 · 0 评论 -
设计模式 - 单件模式 C++
单件模式单件模式允许一个类有且只有一个对象。单件模式的关键是防止程序员获得 控制对象生存期的权利。ya类的默认的构造函数,拷贝构造函数和赋值构造函数。一个单件的示例:原创 2014-09-10 08:07:07 · 788 阅读 · 0 评论 -
设计模式 - 策略和职责链模式 C++
策略和职责链模式: 运行时选择的算法。策略模式的主要意图是: 对于一个问题,我们其实可以通过多种方式来解决,但最好的解决方式都是根据"具体的情况"来决定的。这就是动态的选择,是策略。 职责链是将一系列的策略串在一起,当遇到问题时从头到尾对职责链进行遍历,来找到最适合的解决方式。这里的"具体情况"在程序中可以理解为上下文环境 context,它的输入会决定到底采取什么样的策略原创 2014-09-26 15:25:22 · 742 阅读 · 0 评论 -
Thinking in C++ -- 函数的缺省参数
缺省参数是在 C++函数声明时就给其参数赋值。C++支持函数的重载,在同一个类中,具有相同名字的函数可以通过定义不同的参数列表来实现多态。为了简化编程时的工作,函数的缺省参数也是在这个背景下产生的。它最大好处就是为编程时提供简化。一个简单的例子#include using namespace std;sample.hc原创 2014-08-20 08:21:16 · 813 阅读 · 0 评论 -
C++ 流的使用 Part II - string stream 和 流的格式化输出
string stream继承图pic_1Sample 1 istringstreamSample 2 ostringstream输出流的格式化输出格式化开关标志ios::unitbuf : 单元缓冲区每次插入后立即刷新(马上进行输出)。ios::原创 2014-09-03 08:17:21 · 2466 阅读 · 0 评论 -
C++ 流的使用 Part I - file iostream
继承图pic_1一个简单的流处理的例子。基本的函数:in.get(buffer, SIZE) 读取文件中的一行到buffer中,如果这一行字符的长度大于buffer的size, 那他会先读满buffer->处理,然后继续读取,一直读到'/n' 字符。程序中使用 in.get(); 来读取'/n',并且把'/n'跳过去,如果不使用它的原创 2014-08-29 16:31:20 · 867 阅读 · 0 评论 -
设计模式 - 适配器模式 C++
关于shi一个库或一段代码对外提供了接口,这个接口的表达方式有可能并不为某些调用者所接受。但换一种表达方式这个接口则能很好的适应新的要求。原创 2014-09-25 08:37:57 · 611 阅读 · 0 评论 -
设计模式 - 代理模式 C++
代理模式的基本思想是,需要服务的代码只与代理类打交道,而实际工作的部分隐藏在代理的背后。它的主要的目的是希望隐藏实现的部分,从而消除代码的耦合。pic_1代码示例:代理模式的类型: 这些类型主要是针对不同的情况在代理模式中加入了一些特性。1)原创 2014-09-17 16:39:18 · 1129 阅读 · 0 评论 -
C++ 模板使用
模板是解决重用的一种方式,"模板" 顾名思义,一个框框,框架不会轻易变动,但其中的内容可以随意填写。以一个栈的定义为例class stack{private: enum {ssize = 100}; int m_stack[ssize];int m_top;public: stack() : m_top(0) {m_stack[m_to原创 2014-11-17 08:16:07 · 763 阅读 · 0 评论 -
编程之美 - 计算字符串相似度
问题描述:有两个不同的字符串,通过使用一套操作方法可以把两个字符串变成一样的。例如:1) "a" 和 "b" ==> 把a变成b,或把b变成a 变化了一次2) "abc" 和 "ade" ==> 把bc变成de,或把de变成bc 变化了两次3) "abcd" 和 "abcde" ==> 删除e 变化了一次每操作一次,两个字符串的距离就原创 2016-08-05 08:35:21 · 1354 阅读 · 0 评论