C++
文章平均质量分 55
w1012747007
这个作者很懒,什么都没留下…
展开
-
Windows 多线程编程链表的读写
采用 RWLock结构实现多线程链表的插入,删除以及搜索 //线程类,摘抄Windows 多线程编程的第七章内容#pragma once#include <Windows.h>#include "stdio.h"typedef struct _RWLock{ HANDLE hMutex; HANDLE hDataLock; int Rea...原创 2017-06-04 20:52:51 · 541 阅读 · 0 评论 -
STL之空间配置器
SGI特殊的空间配置器,构成如下: --------------- 定义了全局函数construct()和destroy() --------------- 定义了一、二级空间配置器,alloc; --------------- 定义了全局函数,用来填充,复制内存数据。原创 2017-07-23 17:04:31 · 127 阅读 · 0 评论 -
STL之迭代器与traits编程技法
iterator模式定义如下:提供一种方法,使之能够依序巡防某个聚合物所含的各个元素,而又不暴露该聚合物的内部表达式。迭代器是一种smart pointer:举例auto_ptrtemplateclass auto_ptr {public :explicit auto_ptr(T *p = 0):pointee(p){}~auto_ptr(){ delete原创 2017-07-25 20:15:35 · 208 阅读 · 0 评论 -
从无头单链表中删除节点
删除无头单链表:程序实现很简单,主要是思路如果打不开的话,就无从下手。如果是带有头节点的链表,直接从头部遍历,找到需要删除的节点,然后直接删除删除的方式,加入目前的节点为node ,前一个节点即为prepre->next = node->next;delete node;node = null;但是目前没有头节点,所以没有其他方式找到node的前驱节点。按照原创 2017-08-04 18:43:38 · 848 阅读 · 0 评论 -
C++之模板元编程
关于模板原编程知识强烈推荐:http://blog.jobbole.com/83461/,非常好!这篇文章通过举例详细介绍了模板的模板参数,模板特例化,模板实例化以及编译链接等模板基础知识。本文主要分析文章中的模板元编程例子:首先复述一下模板元编程,以下标红或者加粗的地方是模板元编程的精髓:从编程范型(programming paradigm)上来说,C++原创 2017-07-27 22:19:01 · 1132 阅读 · 0 评论 -
链表的反转
链表的反转,采用头插法链表程序如下:#pragma once#include "stdlib.h"#includeusing namespace std;typedef struct sNode{int data;sNode *next;}Node;void InitList();void ReverseLi原创 2017-08-05 12:46:35 · 150 阅读 · 0 评论 -
【linux线程】线程安全之条件变量
条件变量用法:条件变量一般和互斥量配合,保护线程安全或者完成同步数据的功能。#include <pthread.h>#define INFINITE 0xFFFFFFFF#ifndef ETIMEDOUT#define ETIMEDOUT 10060#endifclass CWaitObj;class CWaitObj{public: expli...原创 2018-10-16 12:22:07 · 235 阅读 · 0 评论 -
求二进制数中的1的个数
第一种最常见的解法:原理是:采用C语言十进制转换成二进制的方法去解题程序代码如下:#include "Count.h"int Count(char b){int number = 0;while (b){if (1 == (b%2)){number++;}b /= 2;原创 2017-08-01 16:33:22 · 186 阅读 · 0 评论 -
一道考察类的纯虚函数定义,静态变量等C++题目
程序原题如下:#pragma onceclass mml{private:static unsigned int x;public:mml(){ x++; }mml(static unsigned int&){ x++; }~mml(){ x--; }virtual mon(){} = 0; //缺少类型, 纯虚函数没有{}原创 2017-08-01 15:48:39 · 413 阅读 · 0 评论 -
C++之new 和 delete
new 和 delete要成对使用,且要采取相同形式。使用new时,会发生2件事,1.内存被分配出来;2.针对此内存会有一个(更多)构造函数被调用;使用delete,发生2件事,1.针对此内存的析构函数被调用;2.内存被释放;举例:std::string * stringPtr1 = new std::string;std::string * stringPtr2 =原创 2017-07-19 22:03:11 · 333 阅读 · 0 评论 -
利用STL算法高效实现容器的循环移位
一个容器(数组)将[first,middle]内的元素和[middle,last]内的元素互换。举例:数字序列{1,2,3,4,5,6,7},对元素3做上述操作后,数字序列{3,4,5,6,7,1,2}。利用STL rotate算法分析。原创 2017-06-05 22:57:02 · 743 阅读 · 0 评论 -
Windows 采用Socket方式实现服务器和客户端的数据访问
摘要:采用以CAsyncSocket为基类的服务器Socket接口类,实现服务器和客户端的数据访问。百度百科关于CAsyncSocket的用法:https://baike.baidu.com/item/CAsyncSocket/9597393?fr=aladdin详细介绍:https://wenku.baidu.com/view/1eda781c6bd97f192279e9de.html...原创 2017-06-04 21:07:12 · 607 阅读 · 0 评论 -
第七章STL之仿函数
仿函数的作用:为算法提供指定的操作。函数指针与仿函数对比,缺点在于无法持有自己的状态,不能满足STL对抽象性的要求,也不能满足软件积木的要求,软件积木理解类似于继承。知识补充:function call操作符(operator())templatestruct plus{ T operator()(const T& x, const T& y)const {ret原创 2017-07-10 20:52:10 · 245 阅读 · 0 评论 -
STL之配接器
adapter:将一个class的接口转换为另一个class的接口。应用于仿函数,functor adapters,价值在于通过它们直接的绑定,组合,修饰能力,几乎可以无限制地创造出各种可能的表达式。配接操作包括系结(bind),否定(negate),组合(compose)、以及对一般函数或成员函数的修饰。例如:不小于12 可以使用greater_equal的仿函数;原创 2017-07-11 22:43:43 · 304 阅读 · 0 评论 -
C++多线程分析
以一道多线程面试题引入:编写一个程序,开启3个线程,线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印5遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推!首先简化该多线程问题,即打印函数要求是AAAAABBBBBCCCCC。接着分析多线程抢占的资源是什么?即打印函数。最简单的方案用临界区保护“打印函数”,如下(临界区是指一块内存,一个数据结构,一个文件原创 2017-07-12 23:21:39 · 302 阅读 · 0 评论 -
STL之序列式容器难点分析
Vector容器又称作变长数组,随着元素的增加,其内部机制会自行扩充空间以容纳新元素。其实现的原理是:在vector中有三个容器分别表示容器目前使用空间的头,尾和可用空间的尾。即容器分配的内存要大于等于实际使用的内存。如果vector无使用内存的话,容器会重新分配一块更大的空间,然后将数据移动到新的空间,然后将旧空间释放掉。所以vector有两个成员函数,size()代表使用空原创 2017-07-27 22:49:04 · 197 阅读 · 0 评论 -
STL算法分析
STL power算法:templateT power(T x ,Iteger n, MonoidOperation op){if(n == 0) return identity_element(op); //证同元素,如果是0的话,代表加法的正同元素else{while((n & 1) == 0){ //n为偶数的时候原创 2017-07-30 15:36:14 · 176 阅读 · 0 评论 -
面试疑难问题
问题1:char *strA()// 局部变量数组不能做为返回,会直接失效导致崩溃{char str[] = "hello world"; return str;}//struct 内存//多重继承中的变量值//动态链接库 导出函数和导出类//设计模式的单例模式//原创 2017-07-21 21:29:33 · 238 阅读 · 0 评论 -
Linux[C] 求教《Linux程序设计》中一个malloc内存分配的问题
其中在http://bbs.chinaunix.net/thread-1698950-1-1.html链接中提到如下疑问:------》在第7章里面,有两个介绍linux内存管理的例子,把我搞的很糊涂。 第一个例子:每次调用 malloc(1024 * 1024) 分配1M的内存,并往刚分配的内存中写入一些数据。循环512次,总共分配了512M的内存。该程序运行的机器内存大小在256M...原创 2018-12-26 14:48:43 · 415 阅读 · 0 评论