C++

如何为嵌套在一个模板类里面的类添加友元?比如==函数。

template <typename> class Vector; template <typename T> bool operator==(const typename Vector<T>::const_iterator&, const typenam...

    415浏览0推荐0评论

    怎么学会正则表达式

    其实没那么麻烦了,Sublime Text 或 类似编辑器的 『ctrl + F』 足矣,平时开发顺带练了.记得打开左下的正则开关其实大部分涉及到字符串模式匹配的都可以用正则解决,我大概罗列下自己的经历1. 入门: 解决各个业务上的问题,比如邮箱、手机号等等,开始知道正则能解决什么问题,以及正则的受限性。2. 进阶: 比如在最初写GitHub - leeluolee/puer: more than...

      161浏览0推荐0评论

      百度的 GCC 被三体人锁定在 3.4.5 版本典故

      佩服百度人民坚守传统的精神。百度的 gcc 还曾经有很长一段时间被锁定在了 gcc 2.96, 当年升级到 gcc 3 的时候那个喜大普奔。记得之前有人质疑我说百度在很长时间禁止大部分 C++ feature 的真实性, 你在这版本上玩 C++ 试试……我没写错,是 2.96,你在 GNU 的主页上查不到 gcc 2.96 这个版本的,这是一个 RedHat 的私家 branch... http:...

        142浏览0推荐0评论

        java项目中的核心算法使用c++编写,是不是就失去了跨平台的特性

        高性能算法用java编写,虽然有跨平台的好处,但是在很多平台上都低性能,不如用C++,然后把平台不同的部分多写几遍,效果更好。该写代码就老老实实写,不会封装平台差异就学,老板不给时间提高在公司的不可替代性就辞职,不要妄想有什么相同的一组API在不同的平台上都可以发挥出最好的效果。...

          151浏览0推荐0评论

          初学c++要怎么学

          学C++一年多了。自觉应该已经跨过了初学的槛,快要入门了。“初学xxx应该怎么学?”,得看你想用xxx做什么。比如C++,如果你只想通过考试,那你只要把那本薄薄的教材看几遍,代码抄一抄改一改。如果你想用C++干活,那么显然你需要完整地把《C++ Primer》《Effective C++》等书看完,同时要掌握CS专业要学的其它基础课程,比如数据结构与算法、计算机组成原理、操作系统、数据库、编译原理...

            111浏览0推荐0评论

            为什么说DFA不支持非贪婪匹配,后向引用和捕获组

            让我来告诉你所谓 DFA 和 NFA 的区别,听好:「DFA 引擎」就是严格按照类似龙书里的方法构建的正则表达式引擎,此时正则表达式会惨遭肢解变成一大堆的状态(所谓米利机),正则表达式的原有结构不会被保留到 DFA 里,它能做的惟一事情就是在正则表达式匹配字符串的时候返回「匹配」,因此无法实现分组捕获。而且 DFA 的能力是被严格限制的,所以无法匹配任何超出正则语言范围的语言——很不幸,使用了反向...

              152浏览0推荐0评论

              让你瞠目结舌的C/C++代码技巧

              如果说「瞠目结舌」的话,IOCCC 上随便拿一篇获奖代码出来就足以让人下巴落地了。The International Obfuscated C Code Contest一个比较经典的例子是 1988 年得奖的代码,这个程序直接估算字符面积求圆周率,可读性算是比较友好的:•westley.c•#define _ F-->00||-F-OO--;int F=00,O...

                204浏览0推荐0评论

                如何用C语言画一个心形

                #include <stdio.h>int main() {     for (float y = 1.5f; y > -1.5f; y -= 0.1f) {    &nb...

                  241浏览0推荐0评论

                  借 shared_ptr 实现 copy-on-write

                  场景:一个多线程的C++程序,24h x 5.5d运行。有几个工作线程ThreadW{0,1,2,3},处理客户发过来的交易请求,另外有一个背景线程ThreadB,不定期更新程序内部的参考数据。这些线程都跟一个hash表打交道,工作线程只读,背景线程读写,必然要用到一些同步机制,防止数据损坏。这里的示例代码用std::map代替hash表,意思是一样的:typedef map<string,...

                    135浏览0推荐0评论

                    内核内存分配常用函数使用

                    1.kmallockmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.<tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。>kamlloc 函数原型void *kmalloc(size_t size, int flags);(1)第一个参数是要分配的块的大小(2)第二个参数是分配标志(fla...

                      149浏览0推荐0评论

                      深入理解 C++ 的动态绑定和静态绑定

                      为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。关于对象的静态类型和动态类型,看一个示例:class B   {&n...

                        135浏览0推荐0评论

                        自旋锁和互斥锁区别 --- 经典

                        POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:Mu...

                          163浏览0推荐0评论

                          C++ 重载、重写、重定义

                          1 成员函数重载特征:     a 相同的范围(在同一个类中)  b 函数名字相同  c 参数不同  d virtual关键字可有可无2 重写(覆盖)是指派生类函数覆盖基类函数,特征是:  a 不同的范围,分别位于基类和派生类中    b 函数的名字相同    c 参数相同    ...

                            98浏览0推荐0评论

                            C++智能指针详解

                            一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_pt...

                              129浏览0推荐0评论

                              static

                              静态数据成员,用关键字static声明,该类的所有对象维护该成员的同一个拷贝(包括该类派生类的对象,即派生类对象与基类对象共享基类的静态数据成员。1、 Static数据成员必须在类外部定义,且正好定义一次,static成员属于类,在类定义时初始化,而不是像普通数据成员在对象建立时通过构造函数初始化。用(::)来指明所属的类 。2、在类的声明中仅仅对静态数据成员进行引用性说明,必...

                                104浏览0推荐0评论

                                C语言编程程序的内存如何布局

                                重点关注以下内容:  C语言程序在内存中各个段的组成  C语言程序连接过程中的特性和常见错误  C语言程序的运行方式  一:C语言程序的存储区域  由C语言代码(文本文件)形成可执行程序(二进制文件),需要经过编译-汇编-连接三个阶段。编译过程把C语言文本文件生成汇编程序,汇编过程把汇编程序形成二进制机器代码,连接过程则将各个源文件生成的二进制机器代码文件组合成一个文件。  C语言编写的程序经过编...

                                  139浏览0推荐0评论

                                  倒数字三角

                                  描述 Description以下的数字倒直角三角形是由二个数确定的:一个数是行数R,1<=R<=39,另一个是种子数S,1<=S<=9。S放在左上角,照着样例输出文件的样子,写一个程序,根据输入的二个数打印出相应的数字倒直角三角形。 输入格式 Input Format单独一行,二个用空格隔开的整数  输出格式 Output Format输出倒直...

                                    191浏览0推荐0评论

                                    没学过C语言的代价

                                    C语言确实显得有些老旧。最近一版权威性的C语言还是1988年发布的;在接近30年的时间里,这个语言的作者一直都没有对它进行过更新,可见它有多过时了。现在,一说到必须有所了解的编程语言,大家都会想到Rust、Go或是Clojure,却很少有人会想到C语言。但是我的同事Myles和我都不是追求潮流的人,因此我们坚持让所有学生都熟练掌握C语言。之所以要求学生学习这门古老的编程语言,我们有下面4个理由:在...

                                      159浏览0推荐0评论

                                      inline函数的用法

                                        在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足所造成的程式出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。下面我们来看一个例子:#include <stdio....

                                        186浏览0推荐0评论

                                        判断链表是否有环

                                        判断一个单向链表是否有环。(指向表头结点的指针为head)方法一:(1)用两个指针p1和p2分别指向表头结点,即p1=p2=head(2)p1和p2分别采用1和2作为步长遍历该链表。(注意,p2应该检查当前结点的下一个结点是否为NULL)(3)如果p1或者p2遇到了NULL,则证明该链表没有环;若p1和p2在某时刻指向同一结点,则说明该链表有环。bool I***itsLoop(slis...

                                          191浏览0推荐0评论

                                          关闭WebSocket连接

                                          7.1.定义7.1.1.关闭WebSocket连接为_关闭WebSocket连接_,端点需关闭底层TCP连接。端点应该使用一个方法完全地关闭TCP连接,以及TLS会话,如果合适,丢弃任何可能已经接收的尾随的字节。当必要时端点可以通过任何可用的手段关闭连接,例如当受到攻击时。底层TCP连接,在大多数正常情况下,应该首先被服务器关闭,所以它持有TIME_WAIT状态而不是客户端(因为这会防止它在2个报...

                                            174浏览0推荐0评论

                                            strlen和sizeof的区别

                                            1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。sizeof还可以用函数做参数,比如:short f();&...

                                              102浏览0推荐0评论

                                              sizeof

                                              一、sizeof使用的场合:1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如: void* malloc(size_t size);  size_t fread(void *ptr, size_t size, size_t nmemb, FILE*&nb...

                                                173浏览0推荐0评论

                                                static

                                                静态数据成员,用关键字static声明,该类的所有对象维护该成员的同一个拷贝(包括该类派生类的对象,即派生类对象与基类对象共享基类的静态数据成员。1、 Static数据成员必须在类外部定义,且正好定义一次,static成员属于类,在类定义时初始化,而不是像普通数据成员在对象建立时通过构造函数初始化。用(::)来指明所属的类 。2、在类的声明中仅仅对静态数据成员进行引用性说明,必...

                                                  104浏览0推荐0评论

                                                  C++智能指针详解

                                                  一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_pt...

                                                    129浏览0推荐0评论

                                                    C++ 重载、重写、重定义

                                                    1 成员函数重载特征:     a 相同的范围(在同一个类中)  b 函数名字相同  c 参数不同  d virtual关键字可有可无2 重写(覆盖)是指派生类函数覆盖基类函数,特征是:  a 不同的范围,分别位于基类和派生类中    b 函数的名字相同    c 参数相同    ...

                                                      98浏览0推荐0评论

                                                      自旋锁和互斥锁区别 --- 经典

                                                      POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间共 享的临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:Mu...

                                                        163浏览0推荐0评论

                                                        深入理解 C++ 的动态绑定和静态绑定

                                                        为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改。关于对象的静态类型和动态类型,看一个示例:class B   {&n...

                                                          135浏览0推荐0评论

                                                          内核内存分配常用函数使用

                                                          1.kmallockmalloc内存分配和malloc相似,除非被阻塞否则他执行的速度非常快,而且不对获得空间清零.<tiger说明:在用kmalloc申请函数后,要对起清零用memset()函数对申请的内存进行清零。>kamlloc 函数原型void *kmalloc(size_t size, int flags);(1)第一个参数是要分配的块的大小(2)第二个参数是分配标志(fla...

                                                            149浏览0推荐0评论

                                                            借 shared_ptr 实现 copy-on-write

                                                            场景:一个多线程的C++程序,24h x 5.5d运行。有几个工作线程ThreadW{0,1,2,3},处理客户发过来的交易请求,另外有一个背景线程ThreadB,不定期更新程序内部的参考数据。这些线程都跟一个hash表打交道,工作线程只读,背景线程读写,必然要用到一些同步机制,防止数据损坏。这里的示例代码用std::map代替hash表,意思是一样的:typedef map<string,...

                                                              135浏览0推荐0评论
                                                              首页上一页12下一页尾页

                                                              推荐作者

                                                              热门手记