
c++
坚定亦唯美
热爱IT行业,一起加油!
展开
-
c++文件系统标准输入输出流的简单使用
#include<iostream>#include<fstream>#include<sstream>#include<string>using namespace std;void readFile(){ const char* filePath = "D:\\guiCode\\leeteCode\\sstreamTest\\sstreamTest\\file.txt"; ifstream readStream(filePath,ios.原创 2021-03-21 10:37:37 · 259 阅读 · 0 评论 -
VS2015 release模式下调试设置
https://blog.youkuaiyun.com/liuzhezhe111/article/details/82155306原创 2021-03-11 14:29:11 · 234 阅读 · 0 评论 -
C++11 使用异步编程std::async和std::future
参考:https://www.cnblogs.com/moodlxs/p/10111601.html原创 2021-03-09 09:31:48 · 195 阅读 · 0 评论 -
c++ condition_variable
参考:https://www.cnblogs.com/haippy/p/3252041.html原创 2021-03-08 18:05:52 · 180 阅读 · 0 评论 -
c++ 读写锁机制
读写锁是多线程同步的另外一个机制。在一些程序中存在读操作和写操作问题,对某些资源的访问会存在两种可能情况,一种情况是访问必须是排他的,就是独占的意思,这种操作称作写操作,另外一种情况是访问方式是可以共享的,就是可以有多个线程同时去访问某个资源,这种操作称为读操作。这个问题模型是从对文件的读写操作中引申出来的。把对资源的访问细分为读和写两种操作模式,这样可以大大增加并发效率。读写锁比互斥锁适用性更高,并行性也更高。需要注意的是,这里只是说并行效率比互斥高,并不是速度一定比互斥锁快,读写锁更复杂,系统开销更大原创 2021-03-08 14:02:19 · 876 阅读 · 0 评论 -
c++变量初始化
参考:https://www.cnblogs.com/caidi/p/9679673.html原创 2021-03-08 13:27:14 · 123 阅读 · 0 评论 -
c++编码格式问题
利用c++11新特性 std::wstring_convert配合std::codecvt模板类,可以实现wstring与string之间的互转这两个模板类的功能是:std::wstring_convert:转码器,接收一个类似codecvt描述编码转换特性的模板参数,用于将本地化的宽字符wstring和指定编码的字节化string进行互转。std::codecvt:编码转换特性类,用在wstring_convert的模板参数中来指定使用哪种编码。例子:#include <codecvt&g原创 2021-03-04 10:37:48 · 282 阅读 · 1 评论 -
构造函数基本用法
https://www.cnblogs.com/xkfz007/archive/2012/05/11/2496447.html原创 2021-03-03 10:26:47 · 314 阅读 · 0 评论 -
atomic_flag 自旋锁
本文介绍 头文件中最简单的原子类型: atomic_flag。atomic_flag 一种简单的原子布尔类型,只支持两种操作,test_and_set 和 clear。std::atomic_flag 构造函数如下:atomic_flag() noexcept = default;atomic_flag (const atomic_flag&T) = delete;std::atomic_flag 只有默认构造函数,拷贝构造函数已被禁用,因此不能从其他的 std::atomic_flag原创 2021-03-02 15:39:01 · 521 阅读 · 0 评论 -
std::lock避免死锁
多线程 std::lock当要同时操作2个对象时,就需要同时锁定这2个对象,而不是先锁定一个,然后再锁定另一个。同时锁定多个对象的方法:std::lock(对象1.锁,对象2.锁…)额外说明:lock_guard lock_a(d1.m, std::adopt_lock);上面这句是为了解开std::lock的锁。参数std::adopt_lock的作用:告诉lock_guard,d1.m已经被上锁了,你不要再去锁它了,沿用它原来的锁就好。案例:#include <list>#in原创 2021-03-02 13:29:24 · 835 阅读 · 0 评论 -
std::this_thread::sleep_for与std::this_thread::yield区别
std::this_thread::sleep_for和sleep这哥俩没啥太大区别都是表示当前线程休眠一段时间,休眠期间不与其他线程竞争CPU,根据函数参数,等待相应时间时间。只是一个是C的函数一个是c++的函数分别对应头文件 <unistd.h> 和 < thread >std::this_thread::yield当前线程放弃执行,操作系统调度另一线程继续执行。即当前线程将未使用完的“CPU时间片”让给其他线程使用,等其他线程使用完后再与其他线程一起竞争"CPU"。st原创 2021-03-02 10:25:08 · 532 阅读 · 0 评论 -
c++11新特性学习
https://changkun.de/modern-cpp/zh-cn/01-intro/index.htmlc++11新特性:1.auto 类型自动推导 auto i=10;2.enum class …, 不可当做int类型使用,使用需要指定作用域可避免命名冲突3.nullptr ,#define NULL 0,其中,在NULL使用时存在函数调用歧义,void func1(char*);void func1(int);都可以被调用4.for(auto&:vec) 结构化绑定遍历,st原创 2021-03-01 17:56:13 · 132 阅读 · 0 评论 -
bind与std::ref
std::ref与bind配置使用原创 2021-02-26 17:49:46 · 124 阅读 · 0 评论 -
多线程学习地址
https://www.kancloud.cn/jxm_zn/cpp_concurrency_in_action/content常用框架代码:头文件:ThreadAlloc.h#pragma once#include<iostream>#include <thread>#include <atomic>#include <vector>#include <functional>namespace EPT { inline u原创 2021-02-24 10:31:44 · 107 阅读 · 0 评论 -
boost入门教程
https://www.cnblogs.com/lidabo/p/9294874.html原创 2021-02-20 13:51:10 · 888 阅读 · 0 评论 -
c++中NULL二义性问题
在编程逻辑世界,有因必有果,如果一个结果含糊不定(二义性),显然是我们不想要的。C++11中引入nullptr是为了解决NULL的二义性问题。NULL二义性的体现 void func(int) {} void func(int *) {}当函数调用func(NULL)时会是怎样执行?先看C++对NULL的定义:#if defined(__cplusplus) # define NULL 0 /* C++中使用0作为NULL的值 */#else # define NULL ((void *原创 2021-02-20 11:48:05 · 580 阅读 · 0 评论 -
c++中重载,重写,隐藏区别
https://www.cnblogs.com/zhangjxblog/p/8723291.html原创 2021-02-20 09:45:44 · 82 阅读 · 0 评论 -
C++中weak_ptr的使用
https://blog.youkuaiyun.com/fengbingchun/article/details/52203825原创 2021-02-19 21:54:10 · 142 阅读 · 0 评论 -
stl迭代器失效
https://www.cnblogs.com/zhanggaofeng/p/12129208.html原创 2021-02-19 18:38:30 · 72 阅读 · 0 评论 -
移动构造函数与右值引用用法
参考:http://c.biancheng.net/view/7847.html在 C++ 11 标准之前(C++ 98/03 标准中),如果想用其它对象初始化一个同类的新对象,只能借助类中的复制(拷贝)构造函数。其实,拷贝构造函数的实现原理很简单,就是为新对象复制一份和其它对象一模一样的数据。需要注意的是,当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝(而非浅拷贝)的方式复制该指针成员。深拷贝和浅拷贝的区别,就在于深拷贝需要对指针类型的成员变量在堆上重新分配内存空间。#include &转载 2021-02-07 11:32:10 · 381 阅读 · 0 评论 -
VA助手快捷键说明
安装完番茄插件之后,可以使用一些默认快捷键或自己设置一些快捷键快捷键 说明Alt+G: 快速跳转,如由声明跳转到实现,由实现跳转到声明。 光标要在标识符处Alt+O: .h与.cpp文件的快速切换Alt + ←:回到上一次光标所在的地方F12:转到所调用函数或变量的定义Alt + M:列出当前文件所有的函数Alt +Shift + A: 添加现有文件Alt+Shift+F: 查找标识符所有被引用的位置 光标要在标识符处Alt+Shift+O: 查找整个Solution下的某个文件 O指op原创 2021-02-03 11:06:21 · 815 阅读 · 0 评论 -
c++计算程序运行时间
C++中如何记录程序运行时间一、clock()计时函数clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock(void) ;简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时原创 2021-02-01 13:39:35 · 13036 阅读 · 0 评论 -
dll调试方法
建立一个dll工程和一个test工程1.例如,#include//导出函数或者类#define HELLO_API _declspec(dllexport)HELLO_API void print(){std::cout<<“hello”<<std::endl;}//导出hello.dlltest工程:typedef int(*fnFun)(); // 定义函数指针类型int main(){// 1. 显式链接//1.1 加载DLL// hDll :原创 2020-07-28 10:29:12 · 360 阅读 · 0 评论 -
C++ replace用法
replace算法:replace函数包含于头文件#include中。 泛型算法replace把队列中与给定值相等的所有值替换为另一个值,整个队列都被扫描,即此算法的各个版本都在线性时间内执行———其复杂度为O(n)。即replace的执行要遍历由区间[frist,last)限定的整个队列,以把old_value替换成new_value。下面说下replace()的...转载 2020-03-30 10:31:09 · 3323 阅读 · 0 评论 -
app关闭进程启动
关闭电源事件函数 SYMessageBox * messageBox = new SYMessageBox(this, "", CHS("退出系统并关闭电源?"), 2); messageBox->showFullScreen(); if (messageBox->exec() == 2) { qApp->quit(); STARTUPINFOA si = {...原创 2019-09-01 20:54:16 · 155 阅读 · 0 评论 -
创建并调用子进程
#include <windows.h>#include <tchar.h>#include <stdio.h>int main(int argc, char* argv[]){ TCHAR szCommandLine[] = TEXT(“NOTEPAD”);//或者WCHAR &...原创 2019-09-01 20:45:48 · 168 阅读 · 0 评论 -
动态链接库生成和调用dll
一、为什么需要dll代码复用是提高软件开发效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架,如ATL、MFC等,...转载 2019-09-01 20:28:15 · 445 阅读 · 0 评论 -
C语言文件操作详解
https://www.cnblogs.com/saolv/p/7793379.htmlhttps://www.cnblogs.com/sddai/p/5775264.html转载 2018-03-04 12:48:57 · 156 阅读 · 0 评论 -
json文件格式详解
json文件格式详解 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基...转载 2019-09-03 09:22:37 · 6270 阅读 · 0 评论 -
c++11新特性
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...原创 2019-09-04 12:30:24 · 148 阅读 · 0 评论 -
使用cmake自动构建工程
使用cmake自动构建工程 公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程;如果是安卓,自动构建出eclipse工程,如果是IOS,自动构建出xcode工程。想想以前用vs...转载 2019-09-13 10:56:43 · 189 阅读 · 0 评论 -
SeetaFaceEngine 人脸检测库实现人脸三部曲
如何使用 SeetaFaceEngine 人脸检测库实现人脸三部曲? 如何使用 SeetaFaceEngine 人脸检测库实现人脸三部曲?人脸检测 FaceDetection人脸校准 FaceAlignment人脸识别 FaceIdentificationhttps://github.com/seetaf...转载 2019-09-13 14:31:57 · 853 阅读 · 0 评论 -
makefile从入门到放弃
该篇文章为转载,是对原作者系列文章的总汇加上标注。支持原创,请移步陈浩大神博客:http://blog.youkuaiyun.com...转载 2019-09-18 09:53:55 · 368 阅读 · 0 评论 -
将exe和dll文件打包成单一的启动文件
当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个方法教你如何快速把exe...转载 2019-09-01 13:35:04 · 406 阅读 · 1 评论 -
使用STL库实现简单的Excel读写
对于 文件的 读写, 当然是 文本文件 最好读...转载 2019-09-01 09:40:56 · 334 阅读 · 0 评论 -
多线程简单实用
#include "pch.h"#include <iostream>#include<vector>#include<mutex>#include<thread>#include<list>class A{public: std::mutex t_mutex1; std::mutex t_mutex2; /*A...原创 2019-06-02 22:40:13 · 120 阅读 · 0 评论 -
单例设计模式实例
#include "pch.h"#include <iostream>#include<list>#include<mutex>using namespace std;std::mutex Mymutex;//单例设计模式实例:class MyCAS{private: static MyCAS *m_instance; MyCAS()...原创 2019-06-02 22:38:48 · 275 阅读 · 0 评论 -
int与string类型转换
int转stringint n = 0;std::stringstream ss;std::string str;ss<<n;ss>>str;string转intstd::string str = "123";int n = atoi(str.c_str());原创 2018-03-21 12:25:33 · 189 阅读 · 0 评论 -
c/c++头文件的作用及使用规则
头文件是C/C++程序不可缺少的组成部分。使用头文件,应该注意头文件的作用和用法相关知识点。1.头文件的作用C/C++编译器采用的是分离编译模式。在一个项目中,有多个源文件存在,但是它们总会有一些内容是相同的,如使用相同的用户自定义类型、使用了相同的全局变量等。因此,将这些内容抽取出来放到头文件中,然后在提供给各个源文件包含,就可以避免这些内容的重复书写,提高编程效率和代码安全性。所以,设立头文件...转载 2018-03-14 09:04:43 · 3529 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)
C++文件读写详解(ofstream,ifstream,fstream) 这里主要是讨论fstream的内容:1 #include <fstream> 2 ofstream //文件写操作 内存写入存储设备 3 ifstream //文件读操作,存储设备读区到内存中 4 fstream //读写操作,对打开的文件可进行...转载 2018-03-19 09:51:33 · 222 阅读 · 0 评论