
[C/C++]
桑来93
time will tell
展开
-
VS2015无法解析外部符号__imp__fprintf
用VS2015编译 libdash 时出现了这样的错误http://www.cnblogs.com/ubosm/p/5444919.html出现了__imp__fprintf和__imp____iob_func 的错误In visual studio 2015, stdin, stderr, stdout are defined as follow :#define stdin ...原创 2018-11-29 09:11:01 · 1422 阅读 · 0 评论 -
c#和c++数据类型对应关系
c#和c++数据类型对应关系c#和C++类型对应关系对照表原创 2019-05-12 22:01:57 · 699 阅读 · 0 评论 -
MFC之消息机制
windows消息机制消息分类与消息队列Windows中, 消息使用同一的结构体(MSG)来存放信息.其中:message 表明消息的具体类型.而 wParam , lParam是其最灵活的两个变量. 为不同的消息类型时, 存放的数据含义也不一样.time 表示产生消息的时间. pt 表示产生消息时鼠标的位置.消息分类按照类型. Windows 将消息分为:消息I...原创 2019-05-14 16:36:12 · 585 阅读 · 0 评论 -
C++ 图的算法 最小生成树之kruskal(克鲁斯卡尔)算法
转载自C++ 最小生成树之kruskal(克鲁斯卡尔)算法kruskal算法:同样解决最小生成树的问题,和prim算法不同,kruskal算法采用了边贪心的策略,思想要比prim算法简单。算法基本思想在初始状态时隐去图中的所有边,这样图中每个顶点都自成一个连通块。之后执行下面的步骤:(1)对所有的边 按边权从小到大 进行排序;(2)按边权从小到大测试所有边,如果当前测试边所连接的两...转载 2019-03-15 17:53:03 · 1377 阅读 · 0 评论 -
C++ 图的算法 最小生成树之Prim(普里姆)算法
转载自C++ 最小生成树之Prim(普里姆)算法最小生成树: 是在一个给定的无向图G(V,E)中求一棵树T,使得这棵树拥有图G中的所有顶点,且所有边都是来自图G中的边,并且满足整棵树的边权之和最小。最小生成树的性质:最小生成树是树.边数是点数减1.树中不存在环.最小生成树不唯一.但是权值一定相同.根节点可以是任意一个节点.基本思想对图G(V,E)设置集合S,存放已经被访问...转载 2019-03-15 16:58:03 · 1503 阅读 · 0 评论 -
建堆O(n)时间复杂度证明
建堆复杂度先考虑满二叉树,计算完全二叉树建堆复杂度基本相同。对满二叉树而言,第i层(根为第0层)有2^i个节点。由于建堆过程自底向上,以交换作为主要操作,因此第i层任意节点在最不利情况下,需要经过(n-i)次交换操作才能完成以该节点为堆根节点的建堆过程。因此,时间复杂度计算如下:T(n) = 2^0 * (n - 0) + 2^1 * (n - 1) + … + 2^n * (n - n) =...转载 2019-03-15 14:27:01 · 809 阅读 · 0 评论 -
C++模板
1 什么是模板模板是一种 对类型进行参数化的工具. 主要有两种形式: 函数模板 和 类模板函数模板就是对参数类型不同的函数类模板针对数据成员和成员函数类型不同的类使用模板的目的就是为了让程序员能够编写与类型无关的代码,重点关注逻辑功能与算法的实现.2. 函数模板和类模板的区别函数模板的实例化是由编译程序在处理函数调用时自动完成的.类模板的实例化必须程序员在程序中显示指定....原创 2019-03-15 11:26:54 · 103 阅读 · 0 评论 -
C++ 智能指针
1 为什么要引入智能指针如果一块内存被多个指针引用,但其中的一个指针释放且其余的指针并不知道,这样的情况会发生 挂起引用.内存泄露. 在理想情况下,内存申请了又记得释放就可以了.但是往往在申请与释放之间程序可能出问题(异常,中途return,忘记释放),导致内存没有释放.2 什么是智能指针智能指针是存储指向动态分配(堆)对象指针的类. 用于实现自动正确的销毁动态分配的对象.防止内存泄...原创 2019-03-15 10:44:38 · 190 阅读 · 0 评论 -
C++ const和static
C++ const与staticconstconst 用于定义常量,修饰要保护的东西可以用于函数重载.可以节省空间,避免不必要的内存分配.const可以修饰: 变量 函数 引用 函数参数 函数等.const在类中修饰成员变量.成员变量不能修改,且只能通过初始化列表进行赋值. const成员函数不能修改类中成员变量. const成员能够访问const成员变量.而其他成员函数不可以.c...原创 2019-03-15 09:51:21 · 443 阅读 · 0 评论 -
C++ placement new
什么是placement new?所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可placement new的好处在已分配好的内存上进行对象的构建,构建速度快已分配好的内存可以反复利用,有效的避免内存碎片问题。operate new 重载当我们创建一个类的对象时,调用如下:class MyClass...原创 2019-03-09 09:56:53 · 934 阅读 · 0 评论 -
C++ 图的算法拓扑排序算法
转载自C++ 拓扑排序算法有向无环图如果一个有向图的任意顶点都无法通过一些有向边回到自身,那么称这个有向图为有向无环图。不含环路的有向图必包含入度为零的顶点—因此一定存在拓扑排序拓扑排序的应用图是否存在环拓扑排序具体算法拓扑排序是将有向无环图G的所有顶点排成一个线性序列,使得对图G中的任意两个顶点u、v,如果存在边u->v,那么在序列中u一定在v前面,这个序...转载 2019-03-18 09:27:10 · 1177 阅读 · 0 评论 -
C++拷贝构造函数
拷贝构造函数使用场景https://blog.youkuaiyun.com/ling_hun_pang_zi/article/details/80234098)拷贝构造函数拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的第一个参数是本类型的一个引用变量拷贝控制与资源管理行为像值的类.(独立). 每个对象都拥有一份自己的拷贝.行为像指针的类.(共享). 引用计数!...原创 2019-03-24 09:17:00 · 249 阅读 · 0 评论 -
多线程:原子操作解决线程冲突
转载自C++拾遗–多线程:原子操作解决线程冲突前言在多线程中操作全局变量一般都会引起线程冲突1 线程冲突#include <stdio.h>#include <stdlib.h>#include <process.h>#include <Windows.h>int g_count = 0;void count(void *p...原创 2019-03-24 10:06:50 · 947 阅读 · 0 评论 -
C++内存管理整理
内存分布与分配方式内存分布C++中,内存分为5个区,分别是 堆 栈 自由存储区 全局/静态存储区 常量存储区栈 : 内存由编译器在需要时自动分配和释放。通常用来存储局部变量和函数参数。堆 : 内存使用new进行手动分配使用delete或delete[]手动释放。若未将内存正确释放,就会造成内存泄漏,但在程序结束时,会由操作系统回收.自由存储区 : 使用malloc进行分配,使用free...原创 2019-03-24 10:51:19 · 375 阅读 · 0 评论 -
C++面试题(持续整理)
整理面试过程中C++相关题目战线比较长先编辑个空个帖子慢慢补充.更新时间: 2019年3月24日11:03:03https://blog.youkuaiyun.com/qjh5606/article/details/88774410C++内存管理堆和栈的区别new和malloc定位new内存对齐类的大小https://blog.youkuaiyun.com/qjh5606/articl...原创 2019-03-24 11:08:46 · 258 阅读 · 0 评论 -
C语言中的nan和inf 的判断和使用
C语言中的nan和inf的判断与使用引言在数据处理输入输出时,极有可能遇到数据读入空值(极大、极小)、运算中分母为0或0.0,对0取对数等操作,这将产生nan或inf的产生。这篇博文旨在分析C/C++产生nan和inf的操作及判断是否有nan或inf产生。NAN的产生原因nan: not a number,表示“无效数字”。对负数开方,对负数求对数,操作都会得到nan。(000...转载 2019-04-02 21:17:04 · 2461 阅读 · 0 评论 -
error C1128: 节数超过对象文件格式限制: 请使用 /bigobj 进行编译
https://www.cnblogs.com/VVingerfly/p/6648064.htmlVS2015出现如上错误。默认情况下,对象文件最多可存放 65,536 (2^16) 个可寻址的节。 这种情况不管指定哪个目标平台。 /bigobj 可将该地址容量增加至 4,294,967,296 (2^32)。大多数模块将从来不会生成包含节数超过 65,536 的 .obj 文件。 但是...转载 2019-04-18 20:43:54 · 1443 阅读 · 0 评论 -
MFC的Main函数跑哪去了
原文 MFC的Main函数跑哪去了0 习惯的思维一般拿到C/C++程序. 首先会找 main 函数在哪里.然后顺序往下看.因为 main 函数是程序的入口.当在C++中SDK(win32 API project)开发时也继承沿用C的思维有个 main 函数. 叫WinMain 或者_tWinMainQT也和C一样.有一个 main 函数1 SDK中的流程开发一个带界面的SD...转载 2019-05-11 01:41:15 · 3381 阅读 · 0 评论 -
理解C++存在继承和组合的对象构造函数调用顺序
理解C++存在继承和组合的对象构造函数调用顺序例题#include "bits/stdc++.h"// 虚函数能在析构函数里面调用吗class C {public: C() { cout << "构造函数 C" << endl; } ~C() { cout << "析构函数 C" << endl; }};cla...原创 2019-07-15 09:28:23 · 426 阅读 · 0 评论 -
C++各基本类型与string的转换
C++各基本类型与string的转换中已经封装好了对应的转换方法:标准库中定义了to_string(val);可以将其它类型转换为string还定义了一组stoi(s,p,b)、stol(s,p,b)、stod(s,p,b)等转换函数.可以分别转化成int、long、double等void testTypeConvert(){ //int --> string ...原创 2019-03-09 09:02:52 · 609 阅读 · 0 评论 -
C++ list::splice()函数详解
list::splice实现list拼接的功能。将源list的内容部分或全部元素删除,拼插入到目的list。函数有以下三种声明:一:void splice ( iterator position, list<T,Allocator>& x );二:void splice ( iterator position, list<T,Allocator>& x...转载 2019-01-05 22:29:02 · 28674 阅读 · 0 评论 -
C++ 优先队列priority_queue
C++ 优先队列priority_queue 参考博客优先队列优先级队列是一个拥有权值观念的queue。它允许在底端添加元素、在顶端去除元素、删除元素。 - 缺省情况下,优先级队列利用一个大顶堆完成。 STL堆详解与编程实现头文件&amp;amp;定义#include &amp;lt;queue&amp;gt;#include &amp;lt;functional&amp;gt转载 2018-08-13 15:22:35 · 3517 阅读 · 0 评论 -
静态链接与动态链接
参考文献理解静态链接与动态链接 静态链接与动态链接的区别 静态链接与动态链接优缺点原创 2018-04-22 10:21:47 · 308 阅读 · 0 评论 -
Debug Release 区别
参考文献debug release 区别原创 2018-04-22 10:23:58 · 153 阅读 · 0 评论 -
C++ bitset类型
C++ bitset类型 C++ bitset用法 C++基础——bitset与string的相互转化定义与初始化 bitset头文件 bitset bitset是一个模板类. 类似于array类. 有固定大小.当定义一个bitset时.必须指定其含有多少个二进制位.bitset<32> bitvec(1U);可以使用 [] 进行访问...原创 2018-08-17 22:15:00 · 517 阅读 · 0 评论 -
C++ 位运算
C++ 位运算 位运算 位运算总结 位操作基础篇之位操作全面总结二进制数按位运算 符号 描述 运算规则 &amp;amp; 与 两位都为1,结果为1 | 或 有一位为1,结果为1 ~ 非 ~0=1;~1=0 ^ 异或 两位不同,结果为1 &amp;lt;&amp;lt; 左移 各二进...转载 2018-08-15 09:35:36 · 366 阅读 · 0 评论 -
C++ 关联容器 笔记整理
关联容器 关联容器中元素是按关键字来保存与访问的. 顺序容器中的元素是按它们在容器中的位置来顺序保存与访问的.关联容器类型// 关联容器类型1.按关键字有序保存元素map; // 关联数组,保存 关键字-值 对set; // 关键字即值,只保存 关键字的容器multimap; // 关键字可重复出现的mapmultise...原创 2018-08-06 09:01:32 · 216 阅读 · 0 评论 -
C++ 顺序容器 笔记整理
顺序容器顺序容器类型vector 可变大小数组.支持快速随机访问.在尾部之外的位置插入or删除元素可能很慢.deque 双端队列. 支持快速随机访问. 从头尾位置插入or删除元素很快.list 双向链表. 只支持双向顺序访问. 在`list中任何位置进行插入or删除操作都比较快.array 固定大小数组.支持快速随机访问. 不能添加or删除元素.string 与 vec...原创 2018-08-06 09:00:52 · 889 阅读 · 0 评论 -
C++ stringstream
c++的输入输出控制类C++引入了ostringstream、istringstream、stringstream这三个类要使用他们创建对象就必须包含 &lt;sstream&gt; 这个头文件istringstream类用于执行C++风格的串流的输入操作ostringstream类用于执行C风格的串流的输出操作strstream类同时可以支持C风格的串流的输入输出操作istrin...转载 2018-08-09 09:02:16 · 306 阅读 · 0 评论 -
C++对象模型之内存布局
C++对象模型之内存布局(1)单继承对象模型C++对象模型之内存布局(2)多继承的内存布局和单继承和多重继承不一样,子类继承一个父类,子类就有一个虚函数表,当子类继承两个父类时,子类就有两个虚函数表而且子类自己定义的虚函数,放在了第一个继承类的虚函数表里//多继承的内存布局#include &quot;stdafx.h&quot;#include &amp;lt;iostream&amp;gt;u...转载 2018-05-14 22:00:52 · 139 阅读 · 0 评论 -
C陷阱与缺陷笔记
第一章 词法陷阱1.1 =不同于==1.2 &与|不同于&&与||1.3 词法分析中的”贪心法”编译器将程序分解成符号的方法是,从左到右一个一个字符读入,如该字符能组成一个符号,再读入下一个字符.判断两个字符组成的字符串是否可能是一个符号的组成部分.如能,继续读入下一个字符.重复上述判断.1.4 整型变量注意进制 0开头:8进制1.5 字...原创 2018-04-21 16:17:48 · 278 阅读 · 0 评论 -
重拾C语言:关键字extern
利用关键字extern可以在一个文件中引用另一个文件中定义的变量或者函数。 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。 extern声明不是定义,即不分配存储空间。extern 关键字详解...原创 2018-04-21 11:08:01 · 167 阅读 · 0 评论