
C++
卡木_
思而致远
展开
-
C++ 异常处理之new_handler机制
(一)初探new_handler 首先,C++的内存管理和异常处理是重点,也是交融的板块。在编写C/C++程序时,经常会malloc/new一块内存,大概就会有如下的代码://malloc:#define SIZE 100int *p = malloc(sizeof(int) * SIZE);if( !p ){ //...}//new:...原创 2020-01-13 18:31:22 · 765 阅读 · 0 评论 -
11_C++多线程及线程间通信
参考:https://m.imooc.com/article/289630 C++11 标准库新引入的线程库https://www.jianshu.com/p/e5a3498ba930(一)多线程编程#include <iostream>#include <thread>#include <mutex>#include <condi...原创 2019-08-08 18:06:56 · 7040 阅读 · 0 评论 -
C++ 引用的底层实现
参考:https://blog.youkuaiyun.com/lws123253/article/details/80353197小结:(1)引用占一个指针类型的内存大小;(2)引用的内存地址存放的是被引用变量的起始地址;(3)当int x = 1; int &b = x; cout << &b << endl; 因为b是一个引用类型,故&b不会被编译...原创 2019-08-08 18:10:04 · 453 阅读 · 0 评论 -
C++ STL string
(一)string的理解string是一个容器,主要注意初始化、字符的增删改查(注意类型)、迭代遍历(方式很多)、内存管理和一些字符串函数等等。内存管理resize 和reserv分析见https://blog.youkuaiyun.com/oppo62258801/article/details/75949802代码见下。(二)Test Demo#include <iostream...原创 2019-08-20 09:16:30 · 255 阅读 · 0 评论 -
C++ STL vector 定义 操作(各种正反向遍历是重点)
(一)了解vectorvector是一个容器,可容纳不同的类型;常见操作是初始化、push_back/pop_back/insert/erase/clear data to vector、各种正反向遍历、排序与二维定义及遍历。(二)Test Demo#include <iostream>#include <vector>#include <algor...原创 2019-08-20 10:41:33 · 1716 阅读 · 0 评论 -
C++ STL set集合
(一)了解setset是一个有序(默认升序,可设置为降序创建)不重复的集合。set的创建和vector类似,也是用{};set的遍历也是用自己的迭代器:set<T>::iterator it = xxx.begin()...;set的clear()就直接清空set的erase的参数可以是迭代器指定的头尾,也可以是set容器中指定要删除的keyvalue;set的insert...原创 2019-08-22 14:58:53 · 663 阅读 · 1 评论 -
C++ STL list(强大到想扔了C)
(一)了解listlist是一个十分强大的链表容器概念!可以进行各种遍历、插入、删除、去重、合并、拼接、排序等。(二)Test_Demo#include <iostream>#include <list>//链表结构using namespace std;int main(){ /***************Demo1 list define...原创 2019-08-27 14:29:16 · 5395 阅读 · 2 评论 -
C++ STL map
(一)了解mapmap是有序(默认升序)不重复的key-value对(关联容器,不同于顺序容器)其底层存储结构为红黑树。key不允许重复(二)Test_Demo#include <iostream>#include <string>#include <map>using namespace std;int main(){ /****...原创 2019-08-28 19:53:43 · 326 阅读 · 0 评论 -
C++ STL array
(一)了解arrayarray是一个静态数组的容器,固定长度,但是也有迭代器,特别是at方法可以检测越界,同时,array的使用也比较方便。不过,为觉得不如使用普通的数组。。。(二)Test_Demo#include <iostream>#include <array>#include <algorithm>using namespace ...原创 2019-08-29 14:33:25 · 339 阅读 · 0 评论 -
C++ STL queue
(一)了解queuequeue就是一个FIFO的队列其底层容器默认是deque没有迭代器!只能访问头和尾,不能随机访问。queue是适配器,不叫容器,因为是对容器的再封装。(二)Test_Demo#include <iostream>#include <queue>//FIFO#include <algorithm>using nam...原创 2019-09-02 17:30:40 · 316 阅读 · 0 评论 -
07_C++文件读写
C++的文件读写就是用用fstream、ifstream和ofstream类1.头文件:<fstream>2.三个类fstream:I/O流 默认读写打开文件ifstream:I流 默认以读打开文件ofstream:O流 默认以写打开文件3.打开文件方式一:实例化fstream类时默认打开如:fstream file(filename, mode); ...原创 2019-08-02 11:15:50 · 329 阅读 · 0 评论 -
10_C++信号处理
参考:https://www.runoob.com/cplusplus/cpp-signal-handling.html1.相关头文件<csignal>2.信号处理的本质:注册回调用函数signal注册一个对应信号sig的处理函数,当程序在此后运行时,收到该信号就会去回调这个信号处理函数。3.信号从哪里来?可以自己在程序中raise sig;与可以是系统给出。4....原创 2019-08-03 18:00:56 · 307 阅读 · 0 评论 -
04__C++命名空间
C++的命名空间:大概能想到这些:using namespace std;namespace XXX{ /*...*/ };void classname::fun();classname::var;命名空间的嵌套。1.using namespace std;这是最常见的例子,表示此指令以后的内容(本文件中),若有用到std标准库的方法或变量可以不加std::,且其他names...原创 2019-07-23 21:26:42 · 206 阅读 · 0 评论 -
VS2017编译配置和使用LOG4CPP
1.环境(1)Windows7 64bit(2)VS2017(3)log4cpp-1.1.3.tar.gz2.编译参考:http://www.jiazi.cn/blog/?id=55解压log4cpp-1.1.3.tar.gz 得到log4cpp文件夹该版本指供了msvc6,msvc7(2003),msvc10(2010)的编译解决方案,其它编译解决方案可以从中选择一个进行调整。...原创 2019-07-24 21:37:13 · 1659 阅读 · 0 评论 -
05_C++异常处理
1.异常处理结构形如:void except_test(void){ try{ throw 1.2; } catch (const std::exception&){ } catch(...){ cout << "..." << endl; }}int main(int ar...原创 2019-07-30 13:44:12 · 370 阅读 · 0 评论 -
01__C++语法基础
1.demo示例#include <iostream>using namespace std;// main() 是程序开始执行的地方int main(){ cout << "Hello World"; // 输出 Hello World return 0;}2.头文件 no .h3.命名空间如:using namespace st...原创 2019-07-20 21:05:31 · 264 阅读 · 0 评论 -
02__C++面向对象
(一)初窥类与对象1.示例democlass class_name{ int x = 0;public: class_name(); ~class_name(); friend void friendfunc(int x); int a = 1; void func(); protcted: int b = 2;p...原创 2019-07-20 21:34:55 · 278 阅读 · 0 评论 -
00__C++前言
曾听闻C++是最难学的计算机语言,或许从C++ Prime的厚度以及C++系列丛书就可见一般。我想这难度对于小白来说是有一定道理的。当我学习C++的时候,感觉蛮简单的,究其原因,大概是我用了几年C,有点python和Java面向对象基础,加之数据结构等过往吧。 任何计算机语言都只是一门工具,只要懂其规则(一般人不用涉及编译原理)去解决实际问题就好,学习能力才是真正...原创 2019-07-20 21:51:14 · 295 阅读 · 0 评论 -
06_C++泛型编程(函数模板与类模板)
泛型编程主要集中在:泛 型 =》数据类型“泛”泛也可以说是模糊的意思,就是说这是一种将数据类型透明化的编程方式。泛型编程的大概想法就是用模板的概念,向各个数据类型都提供编程接口,实现同一种功能,替代:每一种数据类型的同一种功能都去实现重复的代码。模板:函数模板 && 类模板(一)函数模板1.demo:template<typename T>T h...原创 2019-07-30 16:49:55 · 282 阅读 · 0 评论 -
08_C++智能指针(给自己赞一个)
参考:六大智能指针:auto_ptr\shard_ptr\shared_array\scoped_ptr\scoped_array\week_ptrhttps://blog.youkuaiyun.com/zhourong0511/article/details/80315961auto_ptr: https://www.cnblogs.com/litterrondo/p/3187342.htmlV...原创 2019-08-03 14:26:38 · 226 阅读 · 0 评论 -
09_C++常用设计模式
先占个坑!原创 2019-08-03 18:00:07 · 263 阅读 · 0 评论 -
03__C++内存管理
(一)C++的内存管理前言:提到内存管理,大概会想到:堆、栈、内存、溢出全局变量、局部变量、静态变量、智能指针、new、deletet、malloc、初始化、NULL等等。还会想到一句话:记得释放不用的资源,避免资源泄露!我认为:C/C++是操作十分丰富的语言,但只要长期规范使用,就OK了。另外,需要对一些基本概念了然于胸,如:(1)不同变量的内存分配位置,访问权限、生命周期;(2...原创 2019-07-23 21:14:36 · 179 阅读 · 0 评论