C/C++
文章平均质量分 50
Ink_cherry
这个作者很懒,什么都没留下…
展开
-
DFT 离散傅里叶变换(简单的代码实现)
首先这篇文章不是介绍傅里叶变换的。该文只是做一些代码实现的笔记(其实就是把公式转换为代码)。关于学习傅里叶变换还是应该看一些专业的文章,我对这方面知识学习只是一个小白,希望不要误导一些人):,一些我查到的比较合理的整理 更易懂一些解释 https://www.zhihu.com/question/21314374 https://zhuanlan.zhihu.com/wille/1原创 2017-12-27 17:25:06 · 5888 阅读 · 0 评论 -
Effective C++-----笔记
01 视C+为一个语言联邦02 尽量以const,enum,inline替换#define #deinfe 预处理器的字符串替换,其本身不被视为语言的一部分。尽量以编译器替代预处理器。1对与int常量 最好用enum或const替代#define2对于其他类型的变量,尽量使用const 常量替代3对于形似函数的宏 尽可能用inline替代#defi原创 2017-06-05 16:38:08 · 409 阅读 · 0 评论 -
C++中的explicit关键字 抑制隐式转换构造
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性原创 2017-07-05 11:54:18 · 379 阅读 · 0 评论 -
C++ constexpr
C++11 关键字 constexpr跟const相似,修饰的值不能被改变。constexpr 特点:constexpr指定的声明可以在编译时期求值,并且他的之不能被改变 但是 constexpr修饰的函数不一定能够在编译时期求值,如果他的参数能在编译时期求出来那么 函数值就在编译时期求出原创 2017-07-05 21:26:44 · 912 阅读 · 0 评论 -
C++完美转发
问题描述 C++无疑是十分强大的,但是你可知道,在C++0x标准出现之前,在C++界里有一个十分棘手而未能解决的问题——参数转发。问题的描述如下:对于一个给定的函数E(a1, a2, ..., an),它有参数a1, a2, ..., an,你不可能写出一个函数F(a1, a2, ..., an),使得该函数与E(a1, a2, ..., an)完全等价。转载 2017-07-06 17:23:36 · 2902 阅读 · 3 评论 -
C++11 decltype 和auto
C++ decltype 自动推导类型int var; const int&& fx(); struct A { double x; } const A* a = new A(); decltype(fx()); const int&& 对 左值引用 的const int。decltype(var); int原创 2017-07-09 17:09:13 · 446 阅读 · 0 评论 -
network chess
服务端:IO多路复用epoll 客户端: select非阻塞键盘输入,非阻塞socket模型基于TCP,实现的demo级别的网络中国象棋。总之还缺乏一定的完善型修复c/s均在linux端,后续可能会加入windows的图形界面或者是个简单的AIgithub:https://github.com/inkcherry/NetWork-Chinese-chess-原创 2017-12-20 14:59:21 · 312 阅读 · 0 评论 -
vscode tasks.json launch.json样列
原因test.hClass A{public:static int a;}test.cpp#include "test.h"int a=1;必须加上初始化这句 否早就会报标题的错误 (cpp 不能加static)静态成员类内声明类外初始化类内申明必须加const关键字原创 2017-08-14 20:26:09 · 5687 阅读 · 0 评论 -
STL源码剖析笔记(序列式容器)
Vectorvector的迭代器vector 提供的是Random Access Iterators ,迭代器具备的操作有operator*,operator->,operator++,operator–,operator+, operator-, operator+=,operator-=vector的数据结构 vector 使用线性连续空间, start finish迭代器指向连原创 2017-11-20 17:24:16 · 543 阅读 · 0 评论 -
C语言常量字符串
关于C语言字符串常量不可修改,因为之前懂得的比较浅,起初误认为是编译器 把这样的代码char *s=""str";优化成了 const char*="str". const属性也去不了。但是实际上是与常量字符串的内存体现有关。bodata段各类段bss段: BSS段(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文BlockStarted by S原创 2017-11-08 19:47:01 · 1574 阅读 · 0 评论 -
STL源码剖析笔记(迭代器)
STL经常需要获取迭代器型别来进行一系列算法设计,简单总结一下书所对于型别推导提到的思想迭代器获取其所指元素的型别 1. 一 利用 function template 的自变量推导( argument deducation)机制。template <class I, class T>void func_impl(I iter, T t){ T tmp; // 这里解决了问题。 T就是迭原创 2017-11-12 17:22:22 · 385 阅读 · 0 评论 -
STL源码剖析笔记(空间适配器)
stl_construct.hconstruct()#include <new.h> //欲使用placement new,需先含入此文件template <class T1, class T2>inline void construct(T1* p, const T2& value) {new (p) T1(value) ; //placement new; 唤起 T1::T1(value原创 2017-11-08 21:21:06 · 379 阅读 · 0 评论 -
模板类 的完美转发
在写一个list容器,之前很少写过模板东西,起初我认为和普通函数一样,但实际中遇到了一些问题如下函数 错误的万能引用template <typename T>class A{ func(T &&value);}实际上 由于T是模板类的关系,这样写在func中 T不能起到推导作用,func的参数只是一个普通的右值引用参数 在模板类中实现万能的引用函数。即完美转发,需要再使用一个新原创 2017-11-11 20:28:58 · 730 阅读 · 0 评论 -
WINAPI 表白
可以试一下 水平不高但感觉创意还是有的 送给你了效果是 打开你的画图,给你画一个♥呐#include#include#include#include#define R 10#define PI 3.14159265359#define ox 410#define oy 210using namespace std;int main(){ cout<<"原创 2017-05-16 12:55:33 · 346 阅读 · 0 评论 -
opencv 配置
opencv3.3 visual studio2017 win10 1. https://opencv.org 官网下载opencv 我下载的是最新3.3版本 下载完成解压 2. 将解压路径下 opencv\build\x64\vc14\bin添加到系统环境变量中 3. 添加VC++ 包含目录和库目录 包含目录 库目录:C:\C++lib\opencv\build\原创 2017-12-24 14:36:53 · 476 阅读 · 0 评论 -
Visual studio 更改字符集
想读一个json文件 乱码就很烦想找找改 visual studio 改字符集的地方都找不到 查了查 在一个窗口里 选中文件夹 点击菜单栏 文件->高级保存选项我根本没有高级保存选项 找了半天 没发现 貌似vs2017没带 得自己从工具里调出来 ):点击 菜单栏里 工具->自定义->命令->添加命令 从 文件->高级保存选项 就给提出来了原创 2017-06-05 18:31:50 · 16810 阅读 · 4 评论 -
VS修改平台工具集
MSB8020 无法找到 Visual Studio 2010 的生成工具(平台工具集 =“v100”)。若要使用 v100 生成工具进行生成,请安装 Visual Studio 2010 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”。oxox DirectX Framework C:\Progr原创 2017-06-18 20:26:56 · 38357 阅读 · 1 评论 -
Linker Tools Error LNK1168
Linker Tools Error LNK11682016-11-4 1 min to read Contributors In this articleSee Also 大概解释是 1该文件正在被使用 2其文件句柄被另一个进程锁定原创 2017-06-19 11:58:40 · 1267 阅读 · 0 评论 -
C++ bmp位图读取
如何用C++读取 bmp图片格式颜色矩阵 以及显示首先 简单解释一下bmp文件格式 在 http://paulbourke.net/dataformats/bmp/ 有官方详细解释 bmp 格式文件原创 2017-06-22 21:12:37 · 6224 阅读 · 0 评论 -
C++多线程初探
学习使用thread构造函数从thread定义中(有些地方看不太懂,错了还望指正)1 无参构造 thread() _NOEXCEPT { // construct with no thread _Thr_set_null(_Thr); }没有参数的构造thread() noexceppt 创建空thread对象----------------------------原创 2017-06-29 21:56:55 · 436 阅读 · 0 评论 -
匈牙利算法
匈牙利算法有vN 和uN两个点集构成的二分图 通过深度遍历, 找u0-u1匹配增广轨 -------- 为u0找增光轨找到res++ 连线 为u1找增广轨找到res++连线 为u2找增广轨 假如u2能匹配v5,v6的都被u1,u0分别连接那么试图改变u1,u0的连接对象 给u2腾出v5或者v6位置 腾出来就连接res++ 诸如此类直到整个遍历原创 2017-05-16 12:45:34 · 599 阅读 · 0 评论 -
codeblocks 修改编码格式
修codeblocks中文乱码选setting-compilerGNU-GCC-compiler栏other opitions粘上-fexec-charset=gbk -finput-charset=UTF-8原创 2017-04-15 17:03:42 · 9960 阅读 · 1 评论 -
继承----构造与析构
#include<iostream>using namespace std;class B1{public:B1(int i){cout<<"constructing B1 "<<i<<endl;}~B1(){cout<<"destructing B1 "<<endl;}};class B2{public:B2(int i){cout<<"constructing B2 "<<原创 2016-12-02 21:22:15 · 372 阅读 · 0 评论 -
类模板
#include#include#includeusing namespace std;templateT am(T a,T b){ return a>b?a:b;}templateclass Compare{public: Compare(T a,T b) {x=a,y=b;} T max1()原创 2016-12-02 18:51:08 · 377 阅读 · 0 评论 -
运算符重载
#include<iostream>using namespace std;class A{ public: A(int a,int b){this->a=a;this->b=b;} int a,b; void display(){cout<<a<<" "<<b<<endl;} friend A operator+(A &A1,A &A2);//友元原创 2016-12-03 15:57:43 · 408 阅读 · 0 评论 -
《Unix网络编程》笔记(I/O模型)
Unix模型阻塞式I/O 默认情况的socket,最简单常用的方式,非阻塞式I/OI/O复用(select和poll)信号驱动式I/O(SIGIO)异步I/O(POSIX的aio_系列函数)解释I/O复用 进程阻塞在select系统调用上,直到数据可读,系统调用recvfrom I/O复用的意义在于(查阅资料后的个人理解):当多个众多客户连接,如果使用阻塞模型。则需要为每个原创 2017-12-05 17:29:42 · 486 阅读 · 0 评论 -
GCC 内存对齐
在学习C 汇编中发现了一个奇怪的现象,如下 int foo1(int m,int n) { int p=m*n; return p; } int foo(int a,int b) { int c=a+1; int d=b+2; int e=foo1(c,d); ret原创 2017-12-12 23:27:46 · 818 阅读 · 0 评论 -
C实现C(二)
词法解析这个地方相对比较简单,主要是标识符的检测 这个词法解析相对虚拟机简单一些 把一些特殊的符号转换为如下指令标识符检测c4为实现编译器自举 ,不使用结构体而使用指针存放表,对于标识符的检测主要有下边enum { Tk, Hash, Name, Class, Type, Val, HClass, HType, HVal, Idsz };token:唯一标识(id) hash:hash 值原创 2017-10-24 18:48:44 · 399 阅读 · 0 评论 -
用C实现C编译器(一)
用C实现一个简单的虚拟机 建议先看一遍汇编 通过C分配内存 模拟电脑物理内存实现 模拟汇编指令内存分块(在汇编中的体现):1代码段( cs) 存放代码 2数据段 (ds)存放数据(仅字符串) 3未初始化数据段 (bss)未初始化的数据 4栈 函数外部形参数,内部参数,返回值 的数据结构 5堆 动态分配的内存 在内存中的模型 +------------------+| sta原创 2017-10-22 21:45:11 · 1074 阅读 · 0 评论 -
C++ iterator遍历 以前没注意到的一个点 前置递增和后置递增
今天看C++标准库以前用vector 没有 注意到书上总结迭代器的遍历 for (vector::iterator pos = m.begin(); pos != m.end(); ++pos) { cout << *pos; }为什么用++pos而不是pos++原创 2017-07-06 21:13:46 · 1692 阅读 · 0 评论 -
C++11右值 &&引用
via:http://www.cnblogs.com/TianFang/archive/2013/01/26/2878356.htmlC++ 11 中的右值引用右值引用的功能首先,我并不介绍什么是右值引用,而是以一个例子里来介绍一下右值引用的功能: #include #include u转载 2017-06-06 11:56:25 · 5603 阅读 · 1 评论 -
缓冲区溢出漏洞
via:http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html缓冲区溢出攻击 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《0d转载 2017-06-27 12:26:29 · 982 阅读 · 0 评论 -
C/C++堆栈模型 转载两篇经典
C/C++堆栈指引Binhua Liu前言 我们经常会讨论这样的问题:什么时候数据存储在飞鸽传书堆栈(Stack)中,什么时候数据存储在堆(Heap)中。我们知道,局部变量是存储在堆栈中的;debug时,查看堆栈可以知道函数的调用顺序;函数调用时传递参数,事实上是把参数压入堆栈,听起来,堆栈象一个大杂烩。那么,堆栈(Stack)到底是如何工作的呢? 本文将详解C/C++堆栈的工作转载 2017-06-26 20:23:53 · 1774 阅读 · 0 评论 -
C++智能指针
导读最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑。C++面试过程中,很多面试官都喜欢问智能指针相关的问题,比如你知道哪些智能指针?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等……。而且在看开源的C++项目时,也能随处看到智能指针的影子。这说明智能指针不仅是面试官爱问的题转载 2017-07-04 20:15:45 · 232 阅读 · 0 评论 -
C++ inline内联
以前只知道调用次数频繁的函数可以用inline提升效率 但并不了解机制这篇博客讲的很好 码住1. 内联函数在C++中我们通常定义以下函数来求两个整数的最大值:复制代码 代码如下:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:① 阅读和理解函数 max 的转载 2017-07-02 11:29:02 · 355 阅读 · 0 评论 -
多线程用到类函数中
1静态成员函数可以直接调用void static stafun(int n);std::thread t1(stafun ,n);2普通成员函数调用方法void norfun(int n)std::thread t2(&A::norfun,this,n); //必须有对象,this后边是参数表还要看看,没完全弄明白原创 2017-07-01 23:50:18 · 372 阅读 · 0 评论 -
C++ 使用boost asio学习 搭建简易service
Service测试端口为 8888一开始 不开client 服务器也接受字符、原因是迅雷看看也用 8888端口 干掉他就好了#include#include#include#includeusing namespace boost::asio;using boost::asio::ip::tcp; //子class client_session :publi原创 2017-07-11 16:20:06 · 983 阅读 · 0 评论 -
error C3646: 未知重写说明符
两个头文件 类A B 分离编写B.h include了 A.h 并用A object 实现一个对象 如果A.h又 include了 B.h会出现循环引用错误我是这样错误的其中A.h include B.h 我是粗心多余写上的 删掉就过了正常解决方法:在报错的那个.h文件的类定义前加上class声明调用的类(即class 类)。原创 2017-06-28 17:30:01 · 2513 阅读 · 0 评论 -
fatal error LNK1169: 找到一个或多个多重定义的符号
问题描述如下:有 三个源文件,A.h、B.cpp、C.cpp。A.h是头文件,其中声明了三个变量a1、a2、 a3。B.cpp是A.h中所声明的类的实现源代码,C.cpp是主程序文件。B.cpp和C.cpp中均包含头文件 A.h。在编译时,编译能够通过,但链接时出了问题,出现”error LNK1169: 找到一个或多个多重定义的符号“的错误。经过分析,确定了这是由于两转载 2017-06-18 21:32:48 · 1113 阅读 · 0 评论 -
转载--多进程和多线程的优缺点
via:http://www.cnblogs.com/Yogurshine/p/3640206.html在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),win转载 2017-06-05 16:09:15 · 299 阅读 · 0 评论