随笔分类 -  09-C++

C++学习的总结和笔记
摘要:标准库的 std::set_difference std::set_intersection std::set_union`用来求两个集合的差集,交集和并集。 正好有个需求,需要求在实体类集合A中,但是不再实体类集合B中的元素,可以使用上述方法来实现。 首先,来看下上述几个方法的简单使用。 std: 阅读全文
posted @ 2018-12-25 11:12 Brook_icv 阅读(16656) 评论(0) 推荐(5) 编辑
摘要:本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数、什么情况下调用赋值运算符。最后,简单的分析了下深拷贝和浅拷贝的问题。 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义,但是也没有显式的删除),编译器会自动的隐式生成一个拷贝构造函数和赋值运算符。但用户可以使用 来指定 阅读全文
posted @ 2016-12-07 16:36 Brook_icv 阅读(64895) 评论(8) 推荐(57) 编辑
摘要:说到多线程编程,那么就不得不提 并行 和 并发 ,多线程是实现并发(并行)的一种手段。 并行 是指两个或多个独立的操作 同时进行 。注意这里是 同时进行 ,区别于 并发 ,在一个时间段内执行多个操作。在单核时代,多个线程是 并发 的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的 并行 阅读全文
posted @ 2016-12-05 17:10 Brook_icv 阅读(158158) 评论(11) 推荐(104) 编辑
摘要:想实现个循环缓冲区( "Circular Buffer" ),搜了些资料多数是基于循环队列的实现方式。使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了。偶然间看到分析Linux内核的循环缓冲队列 的实现,确实极其巧妙。 主要有以下特点: 保证缓冲空间的大小为2的次幂,不是的向 阅读全文
posted @ 2016-11-16 16:58 Brook_icv 阅读(4191) 评论(2) 推荐(1) 编辑
摘要:应该都有过这样的经历,在Visual studio中创建解决方案,添加几个项目进去,然后开始愉快的敲代码...。写代码正欢的时候,却总是感觉那里有些不舒服,一细看,这项目名称取的真心挫,修改个吧。直接右击项目名 重命名,修改一个让自己舒心的名称。然而,真的就这么简单么。打开项目所在文件夹,怎么文件夹 阅读全文
posted @ 2016-10-08 23:02 Brook_icv 阅读(15411) 评论(0) 推荐(4) 编辑
摘要:const 是C++中一个让人非常容易误解的特行。 它最简单的用法是被它修饰的变量被称为常量,一旦被初始化后就不能再被修改。但,有时 const 又是非常复杂,甚至让很多的程序员感到“可拍”。 const的简单用法 最简单的用法是声明一个常量,这是在C/C++出现之前就有的一个编程语言的特性。 声明 阅读全文
posted @ 2016-03-13 13:51 Brook_icv 阅读(563) 评论(0) 推荐(0) 编辑
摘要:指针是C++中一类颇具特色的数据类型,允许直接操作内存地址,实现内存的动态分配。指针问题通常包括指针常量,常量指针,数组指针,指针数组,函数指针,指针传值等。 指针和引用的区别 1. 非空区别。在任何情况下都不能使用指向空值的引用。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也... 阅读全文
posted @ 2015-10-08 21:44 Brook_icv 阅读(2718) 评论(1) 推荐(2) 编辑
摘要:结构体是一种复合数据类型,通常编译器会自动的进行其成员变量的对齐,已提高数据存取的效率。在默认情况下,编译器为结构体的成员按照自然对齐(natural alignment)条方式分配存储空间,各个成员按照其声明顺序在存储器中顺序存储。自然对齐是指按照结构体中成员size最大的对齐,在cl编译器下可以... 阅读全文
posted @ 2015-10-03 15:20 Brook_icv 阅读(11449) 评论(0) 推荐(1) 编辑
摘要:导言好多次想学习C++,但都是望而却步。这次因为专业方向原因(数字图像处理),不得不走上学习C++的道路上。网上找了些C++的推荐书籍,入门的大多都是《C++程序设计语言》、《C++ primer》,《C++ primer plus》。这3本书都找来看,但是都没有看完,都是看到类型部分就放弃了。网上推荐的看不了,就自个在图书馆寻寻觅觅,偶然找到了《C++ In Action 》,大致翻看了下,没有用几章介绍类型,就它了。新学期第一周,把第一部分语言的基础看完了,这里就着书中计算器的例子做个总结。简单计算器计算器基于堆栈,接受用户数字和运算符号的输入。输入数字则保存在栈中,如果是运算符号则弹出栈 阅读全文
posted @ 2014-02-23 16:40 Brook_icv 阅读(4284) 评论(0) 推荐(1) 编辑
摘要:作用域通常和变量捆绑在一起,限定了变量可用范围,同时也规定了变量的生命周期:何时创建、何时销毁。作用域通常分为:全局作用域和局部作用域。全局作用域(全局变量)在所用函数体外部定义的变量就是全局变量,具有全局作用域。它在main函数执行前创建,mian函数结束后销毁。下面的代码演示了全局变量的创建和销毁: 1: class World 2: { 3: public: 4: World() 5: { 6: std::cout << "Hello world.\n" ; 7: } 8: 9: ~... 阅读全文
posted @ 2014-02-19 16:54 Brook_icv 阅读(5108) 评论(0) 推荐(2) 编辑