DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  C++/C

上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 47 下一页

摘要:将16进制字符串值转换为 int 整型值此例中用 "1de" 作为测试字符串,实现代码如下:[cpp]view plaincopy#include#include#include#include/**将字符转换为数值**/intc2i(charch){//如果是数字,则用数字的ASCII码减去48,... 阅读全文
posted @ 2014-09-26 15:49 DoubleLi 阅读(14786) 评论(0) 推荐(2)

摘要:在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:char*ptr="123";intn=0;n=atoi(ptr);printf... 阅读全文
posted @ 2014-09-26 15:35 DoubleLi 阅读(20949) 评论(0) 推荐(2)

摘要:近期在补充和梳理C++方面的知识的时候,遇到了WeakPtr这个概念和用法,不甚明白,Google出了一堆文字,包括Boost的shared_ptr和weak_ptr的比较,以及其他一些博客里面给的例子以及解释。其中有一个是这样解释的,原文大意:在C++的weak_ptr里面,有两类指针,一类是拥有... 阅读全文
posted @ 2014-09-24 10:04 DoubleLi 阅读(488) 评论(0) 推荐(0)

摘要:智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢?指针与内存说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了内存,用完后由系统去负责释放.如果是自定义类型,就会自动的去调用你的析构函数.但如果是在堆(heap)中分配了内存,也就是用malloc或者new.那只能... 阅读全文
posted @ 2014-09-24 09:59 DoubleLi 阅读(598) 评论(0) 推荐(0)

摘要:前面讲到auto_ptr有个很大的缺陷就是所有权的转移,就是一个对象的内存块只能被一个智能指针对象所拥有.但我们有些时候希望共用那个内存块.于是C++ 11标准中有了shared_ptr这样的智能指针,顾名思义,有个shared表明共享嘛.所以shared_ptr类型的智能指针可以做为STL容器的元... 阅读全文
posted @ 2014-09-24 09:58 DoubleLi 阅读(491) 评论(0) 推荐(0)

摘要:我们知道auto_ptr通过复制构造或者通过=赋值后,原来的auto_ptr对象就报废了.所有权转移到新的对象中去了.而通过shared_ptr可以让多个智能指针对象同时拥有某一块内存的访问权.但假如我们不希望多个内存块被多个智能指针对象共享,同时又不会像auto_ptr那样不知不觉的就让原来的au... 阅读全文
posted @ 2014-09-24 09:57 DoubleLi 阅读(1097) 评论(0) 推荐(0)

摘要:内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。内存池分类:1、不定长内存池。典型的实现有apr_pool、obstack。优点是不需要为不同的数据类型创建不同的内存池,缺点是造... 阅读全文
posted @ 2014-09-23 00:10 DoubleLi 阅读(2657) 评论(0) 推荐(0)

摘要:内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术。内存池分类:1、不定长内存池。典型的实现有apr_pool、obstack。优点是不需要为不同的数据类型创建不同的内存池,缺点是造... 阅读全文
posted @ 2014-09-23 00:09 DoubleLi 阅读(2923) 评论(0) 推荐(0)

摘要:熟悉C++98的朋友,应该都知道,在C++98中没有thread, mutex, condition_variable这些与concurrency相关的特性支持,如果需要写多线程相关程序,都要借助于不同平台上各自提供的api,这样带来的问题就是程序的跨平台移植性比较差,经常要用一大堆的#ifdef ... 阅读全文
posted @ 2014-09-01 16:22 DoubleLi 阅读(1356) 评论(0) 推荐(1)

摘要:C++函数模版与类模版。template void SwapFunction(T &first, T &second){}//函数模版template //类模版class CTemplate{public: void SWap(T &first, T &second){ }};#include... 阅读全文
posted @ 2014-09-01 15:37 DoubleLi 阅读(9753) 评论(0) 推荐(0)

摘要:单例模式(Singleton Pattern)是设计模式中的一种,它用来保证系统中最多只能存在一个它的实例,其做法是由类自身来创建和持有它的对象实例,把对实例的创建权和管理权都控制在自己手中,以便控制实例数目。关于如何在C++中实现单例模式的讨论已经太多了,我只是简单介绍一下可以继承的单例类。首先介... 阅读全文
posted @ 2014-09-01 14:37 DoubleLi 阅读(6462) 评论(0) 推荐(2)

摘要:C++11支持range-based for循环。这是一个很方便的特性,能省挺多代码。以下代码就能很方便的遍历vector中的元素,并打印出来:12345678std::vector int_vec;int_vec.push_back(1);int_vec.push_back(2);//如果要修改i... 阅读全文
posted @ 2014-08-26 14:25 DoubleLi 阅读(7083) 评论(0) 推荐(1)

摘要:Q: 那个auto_ptr是什么东东啊?为什么没有auto_array?A: 哦,auto_ptr是一个很简单的资源封装类,是在头文件中定义的。它使用“资源分配即初始化”技术来保证资源在发生异常时也能被安全释放(“exception safety”)。一个auto_ptr封装了一个指针,也可以被当作... 阅读全文
posted @ 2014-08-13 23:28 DoubleLi 阅读(770) 评论(0) 推荐(0)

摘要:条款1:不要把一个原生指针给多个shared_ptr管理int* ptr = new int;shared_ptr p1(ptr);shared_ptr p2(ptr); //logic errorptr对象被删除了2次这种问题比喻成“二龙治水”,在原生指针中也同样可能发生。条款2:不要把this指... 阅读全文
posted @ 2014-08-13 23:23 DoubleLi 阅读(1039) 评论(0) 推荐(0)

摘要:thread_group是boost库中的线程池类,内部使用的是boost::thread。随着C++ 11标准的制定和各大编译器的新版本的推出(其实主要是VS2012的推出啦……),本着能用标准库就用标准库的指导原则,决定把项目中多线程相关的部分代码从boost::thread迁移到std::th... 阅读全文
posted @ 2014-08-12 23:12 DoubleLi 阅读(7069) 评论(0) 推荐(0)

摘要:下面是一个生产者消费者问题,来介绍condition_variable的用法。当线程间的共享数据发生变化的时候,可以通过condition_variable来通知其他的线程。消费者wait 直到生产者通知其状态发生改变,Condition_variable是使用方法如下:·当持有锁之后,线程调用wa... 阅读全文
posted @ 2014-08-12 23:06 DoubleLi 阅读(1052) 评论(0) 推荐(0)

摘要:C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件、、、等用于支持多线程。使用C++11开启一个线程是比较简单... 阅读全文
posted @ 2014-08-12 23:04 DoubleLi 阅读(974) 评论(0) 推荐(0)

摘要:C++11多线程教学II从我最近发布的C++11线程教学文章里,我们已经知道C++11线程写法与POSIX的pthreads写法相比,更为简洁。只需很少几个简单概念,我们就能搭建相当复杂的处理图片程序,但是我们回避了线程同步的议题。在接下来的部分,我们将进入C++11多线程编程的同步领域,看看如何来... 阅读全文
posted @ 2014-08-12 23:03 DoubleLi 阅读(4264) 评论(0) 推荐(0)

摘要:本篇教学代码可在GitHub获得:https://github.com/sol-prog/threads。在之前的教学中,我展示了一些最新进的C++11语言内容:1.正则表达式(http://solarianprogrammer.com/2011/10/12/cpp-11-regex-tutoria... 阅读全文
posted @ 2014-08-12 23:00 DoubleLi 阅读(9033) 评论(0) 推荐(2)

摘要:问题背景[cpp]view plaincopy#includeusingnamespacestd;vectordoubleValues(constvector&v){vectornew_values(v.size());for(autoitr=new_values.begin(),end_itr=n... 阅读全文
posted @ 2014-08-12 22:48 DoubleLi 阅读(3963) 评论(1) 推荐(2)

上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 47 下一页