C++
文章平均质量分 73
BridgeMa
这个作者很懒,什么都没留下…
展开
-
C++中数组与指针的区别
通过下面的代码就可以说明问题:int getsize(int data[]){ return sizeof(data);}int_tmain(int argc,_TCHAR *argv[]){ int data1[]={1,2,3,4,5}; int size1=sizeof(data1); int *data2=data1; int size2=s...原创 2018-04-10 22:06:57 · 328 阅读 · 0 评论 -
STL之map与hash_map
在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下: 1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n); 2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1); 3、什么时候用map,什么时候用hash_map? 这个要看具体的应用,不一定常数级别的hash...原创 2018-07-31 15:41:04 · 226 阅读 · 0 评论 -
C++多线程学习篇之补充(join函数的一点总结)
以python中的threading, time模块为例进行代码演示# coding: utf-8# 测试多线程中join的功能import threading, time def doWaiting(): print 'start waiting1: ' + time.strftime('%H:%M:%S') + "\n" time.sleep(3) p...原创 2018-07-20 15:25:22 · 900 阅读 · 0 评论 -
C++之多线程学习篇(3)之线程状态
1. 线程的几种状态线程在一定条件下,状态会发生变化。线程一共有以下几种状态:1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于“可运行线程池”中,变得可运行,只等待获取CPU的使用权。即在就绪状态的进程除CPU之外,其它的运行所需资源都已全部获得。3、运行状态(Running)...原创 2018-07-18 16:59:33 · 7732 阅读 · 2 评论 -
C++多线程学习篇(2)之概念
此博文作为以前学习的总结,写作过程中参考过其他博客1. 程序、进程、线程的区别程序:程序是由一系列的指令和逻辑组成的一个静态文件(如cpp文件),无论能不能运行,它都客观的存在于储存器中。进程:进程是指程序在计算机中一次运行的活动,是系统进行资源分配和调度的基本单位(参考百科,而现在都是以线程为基本单位)。系统为特定的静态程序分配好运行时需要的各种资源,这个时候系统会连带地生成一个PC...原创 2018-07-18 11:47:52 · 254 阅读 · 0 评论 -
C++多线程学习篇(1)之配置篇
在以前学习多线程的过程中,遇到了无法添加包含pthread.h头文件的情况。本文主要简单总结一下这种问题的解决方法。我的编译环境是vs2010。1. 下载文件首先,从链接ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe下载pthreads-w32-2-8-0-release.exe文...原创 2018-07-17 21:49:36 · 577 阅读 · 1 评论 -
ZeroMQ学习总结
1 什么是ZeroMQZeroMQ是一种基于消息队列的多线程网络库,其对套接字类型、连接处理、帧、甚至路由的底层细节进行抽象,提供跨越多种传输协议的套接字。ZeroMQ是网络通信中新的一层,介于应用层和传输层之间(按照TCP/IP划分),其是一个可伸缩层,可并行运行,分散在分布式系统间。2 系统架构2.1总体架构ZeroMQ几乎所有的I/O操作都是异步的,主线程不会被阻塞。Ze...原创 2018-07-17 09:33:31 · 556 阅读 · 1 评论 -
windows的消息机制总结
DOS靠过程来驱动,而windows靠消息驱动。MFC/QT是一个广泛使用的变成类库,对windows的消息机制进行了很好的封装。1、消息的概念:消息是指windows操作系统发给应用程序的一个通告,告诉程序某个特定的事件发生了。比如用户点击鼠标,会引发相关的消息,并交给相应的程序去处理。最终处理消息的是应用程序的窗口函数,如果程序不负责处理的话,系统会作出默认的处理。从数据结构的...原创 2018-07-25 16:57:38 · 7456 阅读 · 0 评论 -
c++的智能指针
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_pt...转载 2018-05-27 21:19:44 · 197 阅读 · 0 评论 -
删除链表中的节点
#include <iostream>using namespace std;struct ListNode{ int m_nValue; ListNode *m_pNext;};void DeleteNode(ListNode **pListHead, ListNode *pToBeDeleted){ if(!pListHead||!pToBeDele...原创 2018-05-08 15:43:33 · 374 阅读 · 0 评论 -
C++中的static关键字
static的作用主要有两种:第一个作用是限定作用域;第二个作用是保持变量内容持久化;c语言中static的用法:1、全局静态变量: 用法:在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。 static int temp; 内存中的位置:静态存储区,在整个程序运行期间一直存在。 初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化...转载 2018-05-19 21:41:55 · 200 阅读 · 0 评论 -
c++内存
一关于内存 1、内存分配方式 内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦...转载 2018-05-09 21:10:34 · 137 阅读 · 0 评论 -
new与malloc的区别
1.属性区别new与delete是c++中的关键字,而malloc与free作为函数使用,需要添加头文件2.参数使用new申请内存无需制定内存大小,由系统自动分配,malloc需要显示给出参数3.返回类型new申请后返回的是指向对象类型的指针,类型严格与分配类型匹配,类型安全,不需要进行类型强转,而malloc申请成功后返回的是void*,需要通过类型强制准换成我们需要的类型...原创 2018-05-09 21:04:09 · 182 阅读 · 0 评论 -
删除链表中的重复节点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* deleteDuplication(ListNode* pHead) ...原创 2018-05-09 16:17:49 · 264 阅读 · 0 评论 -
寻找数组中的任意一个重复数并输出
描述:数组长度为n,数据范围为1到n解法1:先排序#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ int n; cin>>n; int temp; vector<int>nums; for(i...原创 2018-04-11 10:48:57 · 454 阅读 · 0 评论 -
memset函数
1. memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, s...转载 2018-08-13 16:34:21 · 1611 阅读 · 0 评论