
C/C++
NineDays66
email:547691062@qq.com
展开
-
C++实现单例
c++ 单例模式原创 2022-08-01 14:43:58 · 268 阅读 · 0 评论 -
c++ 解决中文字符乱码
string UTF8ToGB(const char* str){ string result; WCHAR *strSrc; LPSTR szRes; //获得临时变量的大小 int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0); strSrc = new WCHAR[i + 1]; MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i); //获得临时变量的大小 i =.原创 2020-06-05 15:09:51 · 3961 阅读 · 0 评论 -
Source Insight 操作技巧
通用设置Options - File Type Options:显示行号:勾选Show line mumbers 选中自动高亮:勾选Hightlight references to selected sysmbol 转换tab成空格:勾选Expand tabs to spaces,设置Tab width:4样式视图切换默认视图:切换成普通视图:View - Mono Font View 快捷键Alt + F12快捷键高亮选中符号:F8替换...原创 2020-05-13 09:28:44 · 526 阅读 · 0 评论 -
Visual Studio 快捷键
1、窗口快捷键 1 Ctrl+W,W: 浏览器窗口 2 Ctrl+W,S: 解决方案管理器 (Solution) 3 Ctrl+W,C: 类视图 (Class) 4 Ctrl+W,E: 错误列表 (Error) 5 Ctrl+W,O: 输出窗口(Output) 6 Ctrl+W,P: 属性窗口 (Property) 7 Ctrl+W,T: 任务列表 (Task) 8 Ctr...转载 2018-07-03 09:04:40 · 874 阅读 · 0 评论 -
并行编程OpenMP基础及简单示例
OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C、C++和Fortran。OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并行程序设计。编译器根据程序中添加的pragma指令,自动将程序并行处理,使用OpenMP降低了并行编程的难度和复杂度。当编译器不支持OpenMP时,程序会退化成普通(串行)程序。程序中已有的...原创 2018-05-15 10:52:12 · 40390 阅读 · 4 评论 -
C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。子类即使不写virtual也是一个意思。 子类可以重写父类的虚函数实现子类的特殊化。 如下就是一个父类中的虚函数:class A{public: virtual void out2(string s) { ...转载 2018-11-14 10:27:01 · 312 阅读 · 0 评论 -
C++ 静态库/动态库生成
C++ 生成静态库 无需 导出头C++ 生成动态库 需要导出头,这样引用动态库时才能找到对应的方法,否则找不到该接口 1)MSVC编译器提供了一系列C/C++的扩展来指定符号的导入导出,即__declspec属性关键字。__declspec(dllexport) 表示该符号是从本DLL导出的符号__declspec(dllimport) 表示该符号是从别的DLL中导入的 ...原创 2018-11-29 09:58:30 · 750 阅读 · 0 评论 -
C++ map
C++中的STL中map用法详解Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部...原创 2018-12-27 16:55:35 · 256 阅读 · 0 评论 -
文件处理库 C++
#ifndef _UTIL_H_#define _UTIL_H_#include <opencv2\opencv.hpp>#include <iostream>#include <vector>#include <string>#include <io.h>#include <fstream>#include...原创 2018-12-24 16:05:58 · 727 阅读 · 0 评论 -
C++ 读取 XML 使用 tinyxml2
调用方法:#include "tinyxml\tinyxml2.h" using namespace tinyxml2;int main(){ XMLDocument doc; doc.LoadFile(xml_path.c_str()); XMLElement *info = doc.RootElement(); // info为根节点 XMLElement ...原创 2019-05-09 17:35:39 · 2687 阅读 · 0 评论 -
c++简单线程池实现
线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他的任务使用,当线程池中的线程都在处理任务时,就没有空闲线程供使用,此时,若有新的任务产生,只能等待线程池中有线程结束任务空闲才能执行,下面是线程池的工作原理图:我们为什么要使用线程池呢?简...原创 2019-05-24 09:55:21 · 233 阅读 · 0 评论 -
C++ 一个生产者 两个消费者 实现
extract_data.h#pragma once#ifndef _EXTRACT_DATA_H_#define _EXTRACT_DATA_H_#include <iostream>#include <vector>#include <opencv2/opencv.hpp>namespace TIEVD { //struct ...原创 2019-06-13 08:47:45 · 1691 阅读 · 0 评论 -
opencv Util
1. PCA 降维void DataPrepareUtil::PCA_Reduce(cv::Mat & input_train, cv::Mat & input_test, cv::Mat & output_train, cv::Mat & output_test, Mat & mean, Mat & eigenvectors){ cout...原创 2018-07-24 09:06:26 · 489 阅读 · 0 评论 -
C++ 编码规范-Google
https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/https://my.oschina.net/u/2250495?tab=newest&catalogId=555782http://oin03u33p.bkt.clouddn.com/Google+C+++%E7%...原创 2018-09-02 15:00:31 · 384 阅读 · 0 评论 -
C++11, 14 新特性
autoC++11中引入auto第一种作用是为了自动类型推导auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推导,可以大大简化我们的编程工作auto实际上实在编译时对变量进行了类型推导,所以不会对程序的运行效率造成不良影响//C++ 11, 14 新特性 // 1. auto 类型帮助程序员 做类型推导, 是类型安全的。让代码更简洁 vector<...原创 2018-06-26 10:24:24 · 231 阅读 · 0 评论 -
C++多线程编程
c++ 11 之后有了标准的线程库:C++ 11发布之前,C++并没有对多线程编程的专门支持,C++ 11通过标准库引入了对多线程的支持,大大方便了程序员的工作,本篇我们对这部分进行简要的介绍。需要说明的是,C++ 11标准库内部包裹了pthread库,因此,编译程序的时候需要加上-lpthread连接选项.#include <thread>#include <cond...原创 2018-06-26 12:44:31 · 58271 阅读 · 13 评论 -
C++ 14 智能指针
C++中通过new创建一个对象,通过delete销毁一个对象;在合适的时机销毁一个对象是及其困难的(特别是在多线程环境下),有时候我们会忘记delete而造成内存泄漏,有时候我们又会在尚有使用者的情况下销毁一个对象,造成使用者对内存的非法访问;在多线程程序中,存在了太多的竞态条件,当你把一个原始指针暴露给别的线程,问题就来了,安全的销毁它并通知其它线程的使用者该指针失效是非常困难的,虽然极端情况的...原创 2018-06-26 14:17:44 · 1149 阅读 · 0 评论 -
c++模板函数声明和定义分离
函数模板c++模板不支持分离编译, 把你模板类的声明和实现放到.h文件里面 。按照这个说的把.h和.cpp文件合并后,果然可以了。但是为什么呢,为什么模板就不支持分离编译?---继续google ing搜到了如下文章(文章原文链接:http://blog.youkuaiyun.com/bichenggui/article/details/4207084):首先,一个编译单元(tra...原创 2018-07-17 08:55:36 · 2788 阅读 · 0 评论 -
C++ Util
1.删除非空文件夹#include <stdio.h>#include <io.h>#include <string.h>#include <direct.h>//删除文件夹目录(非空) int removeDir(const char* dirPath){ struct _finddata_t fb; //查找相同属性文...原创 2018-07-24 09:32:00 · 2535 阅读 · 0 评论 -
vector 释放内存
1.使用swapvector<type>().swap(v);2.使用shrink_to_fitv.clear();v.shrink_to_fit();注意: erase 会删除 size 不会删除 capacity的大小。关于vector已经写的差不多了,似乎要接近尾声了,从初始化到如何添加元素再到copy元素都有所涉及,是时候谈一谈内存的释放了。是的,对...原创 2018-08-14 13:23:23 · 271 阅读 · 0 评论 -
c/c++ 代码中使用sse指令集加速
使用SSE指令,首先要了解这一类用于进行初始化加载数据以及将暂存器的数据保存到内存相关的指令,我们知道,大多数SSE指令是使用的xmm0到xmm8的暂存器,那么使用之前,就需要将数据从内存加载到这些暂存器。 1. load系列,用于加载数据,从内存到暂存器__m128 _mm_load_ss (float *p) __m128 _mm_load_ps (float *p) ...转载 2018-09-15 10:36:07 · 2147 阅读 · 0 评论 -
C++11中智能指针的原理、使用、实现
目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存...转载 2018-10-23 21:24:24 · 230 阅读 · 0 评论 -
C++基础知识总结
1面试C++程序员的时候一般都是3板斧,先是基础问答,然后一顿虚函数、虚函数表、纯虚函数、抽象类、虚函数和析构函数、虚函数和构造函数。接着拷贝构造函数、操作符重载、下面是STL,最后是智能指针。 都能挺过去那基本知识这关应该算是过了,下面就是项目背景和算法了。 1,C++和C相比最大的特点 1)面向对象:封装,继承,多态。 ...转载 2018-10-23 21:42:04 · 186 阅读 · 0 评论 -
OpenBLAS项目与矩阵乘法优化 | AI 研习社
提起矩阵计算,学过《高等数学》的人可能都听过,但若不是这个领域的研究者,恐怕也只停在“听过”的程度。在矩阵计算领域,开源项目OpenBLAS影响巨大,除IBM、华为等巨头公司在使用外,还吸引了全球的研究院校、开发者们关注。雷锋网 AI 研习社近日有幸邀请到了澎峰科技创始人、OpenBLAS项目创始人和主要维护者张先轶,他将为我们介绍OpenBLAS开源项目以及矩阵乘法的优化。嘉宾介绍张...转载 2018-09-15 12:54:13 · 1136 阅读 · 0 评论 -
提高C++程序运行效率的10个简单方法
本文以C/C++程序为例讲述了程序运行效率的10个简单方法,分享给大家供大家参考之用。具体分析如下:对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题。但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少。但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本人积累的一些简单实用的提...转载 2018-05-14 11:25:17 · 12071 阅读 · 2 评论