
C++
yxpandjay
这个作者很懒,什么都没留下…
展开
-
C++11多线程编程——mutex,unique_lock 和条件变量(Condition Variable)
互斥锁std::mutex是一种最常见的线程间同步的手段,但是在有些情况下不太高效。假设想实现一个简单的消费者生产者模型,一个线程往队列中放入数据,一个线程往队列中取数据,取数据前需要判断一下队列中确实有数据,由于这个队列是线程间共享的,所以,需要使用互斥锁进行保护,一个线程在往队列添加数据的时候,另一个线程不能取,反之亦然。用互斥锁实现如下:#include <iostream>#include <deque>#include <thread>#incl原创 2020-10-27 02:21:06 · 2890 阅读 · 0 评论 -
C++ vector push_back深浅拷贝的问题
参考:https://blog.youkuaiyun.com/u012501459/article/details/44132147https://zohead.com/archives/vector-push-back-space-copy/原创 2020-10-09 18:02:16 · 3041 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号
模板类 error LNK2019: 无法解析的外部符号如果将类模板的声明和实现写在两个独立的文件中,在构建时会出现“error LNK2019: 无法解析的外部符号 ”的错误。解决方法有:第一种方法,就是把类模板中成员函数的声明和定义都放在类的定义中(.h文件),不要分开就行。第二种方法,在主文件(main文件)中既包含类模板的声明文件(接口文件)(.h文件),同时也包含类模板的实现文件(.cp...原创 2018-05-30 22:41:20 · 377 阅读 · 0 评论 -
C++生成随机数:高斯/正态分布(gaussian/normal distribution)
高斯分布也称为正态分布(normal distribution)常用的成熟的生成高斯分布随机数序列的方法由Marsaglia和Bray在1964年提出,C++版本如下:#include <stdlib.h>#include <math.h> double gaussrand(){ static double V1, V2, S; static int phase...原创 2018-06-07 12:05:05 · 3666 阅读 · 1 评论 -
lower_bound( )和upper_bound( )的常见用法
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_...转载 2018-08-14 12:04:49 · 177 阅读 · 0 评论 -
C++ 中的&:“&引用” 和“&取地址符”的区别和作用
对临时变量引用的话可能出问题:https://blog.youkuaiyun.com/u011068702/article/details/64443949原创 2018-08-30 10:46:33 · 1460 阅读 · 0 评论 -
C++ Vectori中的assign函数,可用来复制vector或者赋初值
vector 有个函数assign, 可以帮助执行赋值操作。assign会清空你的容器。 assign函数:函数原型:void assign(const_iterator first,const_iterator last);void assign(size_type n,const T& x = T());功能:将区间[first,last)的元素赋值到当前...原创 2018-08-30 13:32:34 · 10093 阅读 · 0 评论 -
Vector的Size一个坑点
Vector.size的返回值为无符号整型 for(int i=0;i<= (src.size()-3);i++){ //TODO} 这里的src.size()若一开始为2,则 src.size()-3并不是想象中的-1, 而是一个很大的无符号数...原创 2018-09-23 13:16:58 · 2978 阅读 · 0 评论 -
Visual Studio项目相对路径的设置
在VS的工程中常常要设置头文件的包含路径,当然你可以使用绝对路径,但是如果你这样设置了你只能在你自己的机器上运行该工程;如果其他人拷贝你的工程到其他机器上就可能无法运行,这个是因为你在建工程时可能把工程放在了E:盘,但是其他人可能会把工程放在其他根目录下,这样会导致找不到头文件问题。对于新手,在设置绝对路径时往往会犯浑,他们不清楚这里的“相当”究竟是以什么位置为起点。其实这里的相对路径就是相当...原创 2019-02-21 18:35:19 · 2479 阅读 · 0 评论 -
c++ string.c_str()转const char*的一个坑点
如果你想以string的内容作为返回值,而又必须返回char*型时#错误示范#因为string这个类在函数结束时就调用析构函数了,导致返回的result指向一个已经释放的地址char* TestFun(){ string test_string = "广东佛山机会开io"; const char* result = test_string.c_str(); re...原创 2019-05-17 10:53:39 · 2560 阅读 · 3 评论 -
sscanf函数用法相关
转自https://blog.youkuaiyun.com/zhouwei1221q/article/details/44890617以前一直以为sscanf只能用来简单的提取用空格隔起来的字符串,知道之前遇到了一些列字符串处理问题,详细研究起来这个函数尽然还是有很强大的有很多类似于正则表达式的功能。首先我们先来看函数定义:定义函数 int sscanf (const char *str,const char...转载 2018-05-24 17:46:18 · 315 阅读 · 0 评论 -
C++依次读取文件中的字符串——getline()函数的应用
1.全局getline函数getlime()有着两种形式http://www.cplusplus.com/reference/string/string/getline/ (1) istream& getline (istream& is, string& str, char delim); (2) istream& getline (istream& is...转载 2018-06-05 16:55:41 · 4630 阅读 · 0 评论 -
c++ 线程
。原创 2017-04-04 14:09:19 · 282 阅读 · 0 评论 -
C++互斥锁
#include<pthread.h>pthread_mutex_t abc; //创建一个名为abc的semaphore变量;pthread_mutex_init(&abc,NULL) ; //初始化 (第一个为互斥变量地址,第二个为互斥变量属性,NULL即为默认快速互斥锁,即abc=1)pthread_mutex_des...原创 2017-04-04 13:58:53 · 751 阅读 · 3 评论 -
C++ 同步
#includesem_t abc //申请一个叫abc的semaphore变量int sem_init (sem_t *sem, int pshared, unsigned int value); // 初始化;第一个参数即为要初始化的sem_t变量,第二个参数为0即表示为当前进程的局部信号量,不应用于其原创 2017-04-04 16:38:15 · 437 阅读 · 0 评论 -
c++ 网络编程基础
1.IP为32位无符号整数端口号为16位无符号整数2.网络字节序即为大端字节序,即高位放在低地址,比如数字123456,数字12放在地址1000,数字34放在1001,数字56放在1002字节序转换函数:#include unsigned long int htonl(unsigned long int hostlong);htonl原创 2017-04-04 19:54:20 · 307 阅读 · 0 评论 -
PAT 1003 Emergency(单源最短路径+Dijkstra)
原题地址https://www.patest.cn/contests/pat-a-practise/1003题意:给定N个城市以及M条城市之间的道路,每座城市有自己的权重city[i],每条道路也有自己的权重cost[i][j],求源顶点v0到目标顶点vt的最短路径的数量,以及沿着最短路径的累加顶点权重的最大值。解题思路本题是单源最短路径的变形题,寻找单源最转载 2017-08-13 21:13:52 · 302 阅读 · 0 评论 -
PAT 1022. Digital Library (30) map及迭代器用法以及用getline读入空格
1022. Digital Library (30)时间限制1000 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueA Digital Library contains millions of books, stored according to their titles, authors, key words of their abstrac转载 2017-08-21 21:31:18 · 245 阅读 · 0 评论 -
C++ 虚函数
转自https://www.cnblogs.com/jin521/p/5602190.html为什么使用虚函数?什么是虚函数?虚函数是为了解决什么问题?面向对象的三大特征:封装多态继承普通虚函数虚析构函数纯虚函数抽象类接口类隐藏 vs 覆盖隐藏与覆盖之间的关系早绑定和晚绑定虚函数表什么是多态?相同对象收到不同消息或不同对象收到相同消息时产生的不同的动作。静态多态 vs 动态多态[-:>静态多...转载 2018-05-14 17:48:49 · 138 阅读 · 0 评论 -
VS2013 BOOST库配置
转自:https://blog.youkuaiyun.com/fly_yr/article/details/48750413序言最近了解各大互联网公司的校招要求,发现了解Boost程序库也是不可或缺的一部分~于是,决定潜心研究下,这个准标准库~首先,在官网下载boost的最新版本Boost 1.59.0 ,这是当前的最新版本。下面详细给出,VS2013环境下配置boost的详细步骤!Boost编译预处理(1)...原创 2018-06-04 17:30:13 · 360 阅读 · 0 评论 -
Windows socket编程
下面介绍网络7层协议在WINDOWS的实现: 7层协议 WIN系统 ________________________________________ 7 应用层 7 应用程序 ________________________________________________ 6 表示层 6 WINSOCK API(DLL) ________________________转载 2017-04-11 19:50:43 · 252 阅读 · 0 评论