C++
文章平均质量分 54
wxl1986622
这个作者很懒,什么都没留下…
展开
-
shared_ptr提供了与内置类型同级别的线程安全性。
shared_ptr提供了与内置类型同级别的线程安全性。(1) 同一个shared_ptr对象可以被多线程同时读取。(2)不同的shared_ptr对象可以被多线程同时修改。即使这些shared_ptr对象指向同一个内存对象也没有问题,因为这些操作主要是对use_count的操作,shared_ptr内部通过cas保证安全。(3) 同一个shared_ptr对象不能被多线程直接修改,但可以通过原子函数完成。这里主要是因为同一个shared_ptr对象的修改不是原子的,需要修改use_count和原创 2021-03-04 23:28:52 · 96 阅读 · 1 评论 -
【C++ 】std::ref()和std::cref()
转自绿色冰点C++11 std::ref使用场景 C++本身有引用(&),为什么C++11又引入了std::ref(或者std::cref)?使用std::ref可以在模板传参的时候传入引用,否则只能传值。主要是考虑函数式编程(如std::bind)在使用时,是对参数直接拷贝,而不是引用。如下例子:#include <functional>#include <iostream> void f(int& n1, int& n2...转载 2021-03-04 20:58:37 · 314 阅读 · 1 评论 -
c++11の条件变量
一、条件变量的引入std::condition_variable 解决了死锁并且控制的资源的访问顺序二避免不必要的等待。当互斥操作不够用而引入的。比如,线程可能需要等待某个条件为真才能继续执行,而一个忙等待循环中可能会导致所有其他线程都无法进入临界区使得条件为真时,就会发生死锁。所以,condition_variable实例被创建出现主要就是用于唤醒等待线程从而避免死锁。std::condition_variable的 notify_one()用于唤醒一个线程;notify_all() 则是通知所...转载 2021-03-03 22:58:40 · 167 阅读 · 1 评论 -
sprintf unsigned char, char
chardecrypt = 223;char str_haresp[HTTP_MD5_STR_LEN] = { 0 }; sprintf(str_haresp, "%02x", (char)decrypt[1]);结果str_haresp:ffffffdf sprintf(str_haresp, "%02x", decrypt[1]);结果str_haresp:df原创 2020-08-05 15:51:08 · 1057 阅读 · 0 评论 -
C++虚函数表解析
2011-01-11 13:57 19人阅读 评论(0)收藏 举报今天我做的笔记C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,转载 2011-11-18 00:55:25 · 1084 阅读 · 0 评论 -
C++中的mutable关键字
分类: C++编程 2009-11-28 20:36 32人阅读 评论(0)收藏 举报摘自:寒星轩的博客 mutable的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中转载 2011-11-25 14:00:32 · 440 阅读 · 0 评论 -
C++中的关键字mutable
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面转载 2011-11-26 16:02:58 · 452 阅读 · 0 评论 -
关于volatile关键字的说明以及测试
分类: C/C++编程 Linux操作系统和C编程2006-04-18 09:57 1436人阅读 评论(0)收藏 举报volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的转载 2011-11-26 16:25:41 · 583 阅读 · 0 评论 -
什么是闭包,我的理解
什么是闭包,我的理解作者: xiaotie 来源: 博客园 发布时间: 2012-01-06 15:36 阅读: 607 次 原文链接 全屏阅读 [收藏] 首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序,是天天在和它打交道,甚至有过一个func转载 2012-01-09 00:37:31 · 867 阅读 · 0 评论 -
模板元编程 --- 用 MPL 解决实际问题
模板元编程 --- 用 MPL 解决实际问题转:http://blog.csdn.net/ralph623/archive/2005/10/15/504369.aspx在 STL 中有各种容器,而 STL 算法允许我们对容器中的元素做各种操作,下面的程序对于每一个当代的 C++ 程序员都应该是轻而易举的:#include #include #include #inc转载 2012-01-09 00:36:36 · 708 阅读 · 0 评论 -
numeric_limits
numeric_limits:numeric_limits::digits是指type的位数。numeric_limits::max() type的最大值。numeric_limits::min() type的最小值在VC中最好用:std::numeric_limits::max)(); //把max用括号括起来避免和windows定义的宏混淆下面代码作转载 2012-01-16 10:38:31 · 3733 阅读 · 0 评论 -
STL的多线程安全问题
2011-05-05 14:58 30人阅读 评论(0)收藏 举报1) stl的线程安全.说一些关于stl容器的线程安全相关的话题。一般说来,stl对于多线程的支持仅限于下列两点:(貌似Effective STL中有描述)1.多个读取者是安全的。即多个线程可以同时读取一个容器中的内容。 即此时多个线程调用 容器的不涉及到写的接口都可以 eg find, b转载 2012-01-15 02:41:31 · 894 阅读 · 0 评论 -
对STL容器线程安全性的期待现实一些
标准C++的世界是相当保守和陈旧的。在这个纯洁的世界,所有可执行文件都是静态链接的。不存在内存映射文件和共享内存。没有窗口系统,没有网络,没有数据库,没有其他进程。在这种情况下,当发现标准没有提到任何关于线程的东西时你不该感到惊讶。你对STL的线程安全有的第一个想法应该是它将因实现而不同。当然,多线程程序是很普遍的,所以大部分STL厂商努力使他们的实现在线程环境中可以正常工作。但是,即使他们做转载 2012-01-14 23:05:02 · 559 阅读 · 0 评论 -
vc中关于 directx的配置,和dxsdk_extras(directshow)
2009-11-10 0:28此文章:自己编写 转载于《汤姆&杰瑞》DirectShow 1 —— 下载与VC配置1 DirectX SDK9Directshow sdk 下载网址 :http://download.microsoft.com/download/d/9/1/d91c44b9-fbac-4e8e-bee1-4a75777923ec/dxsd转载 2012-01-18 09:45:07 · 3122 阅读 · 0 评论 -
wcout
分类: C++标准库 2009-07-11 21:07 146人阅读 评论(0)收藏 举报 #include int main(){ std::wcout.imbue(std::locale("chs")); wchar_t wsz[] = L"abcd霜之哀伤"; std::wcout system("p转载 2012-02-02 10:40:20 · 647 阅读 · 0 评论 -
local详解
分类: C++标准库 2009-07-12 16:14 46人阅读 评论(0)收藏 举报Locale 详解原文地址:http://www.diybl.com/course/3_program/c++/cppsl/20081117/151298.html locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化转载 2012-02-02 10:41:57 · 9176 阅读 · 0 评论 -
limits.h中的"ui64"是什么
limits.h中的"ui64"是什么?[问题点数:20分,结帖人:pz0513]pz0513(彭大将军) 等 级:结帖率:95.24% 楼主发表于:2011-03-17 16:24:05看到limits.h中有C/C++ code #define LLONG_MAX 92233720368547758转载 2012-01-02 13:32:51 · 4577 阅读 · 0 评论 -
error C4335: Mac file format detected: please convert the source file t
你将文本内容复制到Word,之后再创建一个TXT文件将Word的内容复制出来,再将这个TXT文件替换原来的文件转载 2012-02-10 10:03:31 · 3203 阅读 · 0 评论 -
使用了ASIO的项目
使用了ASIO的项目 * Remobo -- create your own Instant Private Network (IPN) * OpenTibia - Open Source Emulation of the MMORPG Tibia * Osiris - Serverless Portal System * Jet Infosystems,转载 2012-02-22 14:26:53 · 1575 阅读 · 0 评论 -
浏览器控件教学:使用流加载和保存HTML内容
本文的部分内容翻译自MSDN文章Loading HTML content from a StreamIPersist* 接口,以及它的附属方法,可以被用于Microsoft® Visual C++® 和 WebBrowser 控件使用流载入和保存HTML内容本文讨论载入HTML内容需要的步骤,分为以下几部分:定位到 about:blankDHTML 对象模型的有效性使用 Q转载 2012-02-16 21:44:07 · 602 阅读 · 0 评论 -
Unicode编码解释UCS、UTF、BMP、BOM
Unicode编码解释UCS、UTF、BMP、BOM发布时间:2007-09-30 08:00:00 来源:linux宝库 作者:linux宝库 点击:320 这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为”,可以在GBK、Unicode、转载 2012-02-15 22:05:35 · 1517 阅读 · 0 评论 -
stl-stable_sort源码学习笔记
huangjunkun的博客huangjunkun的主页 | TA的博客列表 | RSS | 发送留言 | 关注此人0人收藏此文章,收藏此文章 发表于3个月前 , 已有40次阅读 共0个评论0人收藏此文章 前几天,一个新同事前来询问算法stl-stable_sort的情况。由于离上次研读stl源码时间久已(两三年前的事儿了),有些细节转载 2012-02-18 00:28:29 · 1567 阅读 · 0 评论 -
侃一侃vc的std::string
那天心血来潮敲下了这坨代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->cout sizeof(std::string) 我的平台是XP+VC9.0,运行结果是32,不知道为什么要那么多,于是在源代码里捣鼓了一原创 2012-02-20 15:07:12 · 2072 阅读 · 0 评论 -
Boost 库中的实用工具类使用入门
Boost 库中的实用工具类使用入门发布者:IBM 日期: 2008-09-08 00:00:00 浏览次数:0 (共有_条评论)查看评论 | 我要评论 级别: 中级Arpan Sen, 首席工程师, IBM 2008 年 9 月 08 日实用工具类开发和维护会耗费程序员的时间。Boo转载 2012-02-21 11:16:36 · 719 阅读 · 0 评论 -
__declspec关键字详细用法
__declspec关键字详细用法 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式。其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI规范,而__declspec是一种扩展属性的定义。扩展属性语法简化并标准化了C和C++语言关于Microsoft的扩展。用法:__declspec ( extended-decl转载 2012-03-02 13:58:23 · 509 阅读 · 0 评论 -
指针计算问题
#include "stdafx.h"#include using namespace std;class A{public:A(){a = 3;b = 4;}int a;int b;};vector m_vecA;int _tmain(int argc, _TCHAR* argv[]){ A a1, a2, a转载 2012-03-23 16:47:53 · 522 阅读 · 0 评论 -
do{} while(false) 的妙用
do{ if() { break; } if() { break; }}while(false)比 if(){ if() { }} 这个if嵌套排版要好的多。原创 2012-03-27 16:57:09 · 478 阅读 · 0 评论 -
学习开源代码就应该如此
收获很多 标签: 收获 做好 每一个 用心 分类: 每天进步一点 2009-01-07 09:31 昨天小华的一席话让我受益匪浅。读代码真的是需要用心的。不能够天马行空,一目十行,囫囵吞枣。要踏踏实实地做好记录,每一个类,每一个函数,每一个数据成员,都需要认认真真的搞明白,做好详细的记录。 所以,从现在开始,用心去做好当前的事情,而最当前的转载 2012-04-07 00:21:42 · 516 阅读 · 0 评论 -
将十进制整数转化为十六进制字符串形式
在XBT客户端看到这种写法、将十进制整数转化为十六进制字符串形式 比如 l = 3 . v = 64 ,则返回值为"040" std::string hex_encode(int l, int v){std::string r;r.resize(l);while (l--){r[l] = "0123456789abcdef"[v & 0xf];v >>= 4;转载 2012-04-13 10:40:03 · 1884 阅读 · 0 评论 -
map和set的排序
C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。 map和set的树建立之时就会自动排好序,之前使用map,觉得按value排序很麻烦,要建一个multimap将原map倒置存储。如何只用一个map实现value的排序呢?将key 和 value建一个结构体,原创 2012-04-26 09:20:43 · 1033 阅读 · 0 评论 -
mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
INSERT语法INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=e转载 2012-04-27 10:22:48 · 2849 阅读 · 0 评论 -
原来windows也有signal
2009-03-20 22:38 1114人阅读 评论(0)收藏 举报在windows下,信号机制简单来说是通过工作线程实现的,该线程运行于相对优先级THREAD_PRIORITY_HIGHEST,当信号产生时,windows生成该线程执行信号处理逻辑,由于该线程优先级通常主线程,也高于用户自己显式创建的任何线程,windows线程调度逻辑将阻塞其余线程的执行,直到信号原创 2012-04-26 19:58:38 · 602 阅读 · 0 评论 -
长度为0的数组只用在结构体的最后一个成员,用以做一个地址标记,以后用。
标签:数组 标记 地址 休闲 职场在标准 C 或者 C++ 中由于不支持 0 长度的数组,所以 int array[0]; 这样的定义是非法的。不过有些编译器的扩展功能支持 0 长度的数组。在 C 中,0 长度的数组的主要用途是用来作为结构体的最后一个成员,然后用它来访问此结构体对象之后的一段内存(通常是动态分配的内存)。由于其非标准性,在程序中尽量避免使用 0 长度的数组。作原创 2012-05-04 15:56:41 · 591 阅读 · 0 评论 -
长度为0的数组——C语言的非标准用法之一
2008-01-22 15:01在 标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它 表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收原创 2012-05-04 16:02:52 · 506 阅读 · 0 评论 -
结构体最后的长度为0或1数组的作用(转载)
2012-2-17 11:15 | 发布者: benben | 查看数: 143 | 评论数: 0摘要: 其实很早在看LINUX下就看到这个东西,后来在MFC内存池里同样也看到了类似的东西,还依照MFC写过一个类似的小内存池,(MFC用的是return this + 1)后来在李先静的《系统程序员成长计划》里看到了类似的定义,于是心 ...转载 2012-05-04 17:02:04 · 768 阅读 · 0 评论 -
STL map常用操作简介
1。目录 map简介 map的功能 使用map 在map中插入元素 查找并获取map中的元素 从map中删除元素 2。map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 3。map的功能 自动建立Key - valu转载 2012-05-09 23:44:59 · 453 阅读 · 0 评论 -
最近计划
看看UDP打洞。学习mysql语法。在学习mysql源码。暂时就这么多了。原创 2012-05-10 16:28:45 · 470 阅读 · 0 评论 -
研究一下 crt0msg.c 里面的代码
crt0msg.c原创 2012-05-14 17:10:30 · 791 阅读 · 0 评论 -
boost::ptr_map
写tracker服务器的时候:typedef boost::ptr_map t_mapconnections;/** 用map存储tcp连接*/t_mapconnections m_mapconnection;std::auto_ptr connection(new Cconnection(m_pServer, pBuffer->sClient, *((原创 2012-05-15 15:04:07 · 2275 阅读 · 0 评论 -
内存泄漏问题
#include "stdafx.h"#include int _tmain(int argc, _TCHAR* argv[]){int *p = new int(3);int &ref = *p;ref = 4;int newp = 5;std::auto_ptr pAuto(new int(6)); ref = *pAuto.release();de原创 2012-05-15 15:56:04 · 457 阅读 · 0 评论