![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Link_tony
这个作者很懒,什么都没留下…
展开
-
C++刷题(剑指Offer系列)
剑指Offer系列 二维数组查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 //思路:二维的话,左上角最小,右下角最大,那么在左下角开始判断+移动,可以避免漏掉元素。 class Solution { public: bool F...原创 2018-10-17 22:01:04 · 1296 阅读 · 0 评论 -
C++刷题(杂)
手撕系列 堆排 #include <iostream> using namespace std; void max_heapify(int ch[], int n, int i) { int l = 2 * i + 1; int r = 2 * i + 2; int maxi = i; if (l < n && ch[maxi] < ch[l]...原创 2019-03-21 12:39:43 · 305 阅读 · 0 评论 -
GCC编译过程 与 动态链接库和静态链接库
C++源文件到可执行文件过程 源程序 预处理->编译和优化->汇编->链接->可执行文件 1.预处理(Preprocessing) 读取源程序,对其中的伪指令(以#开头的指令(宏定义、条件编译指令、头文件包含指令))和特殊符号进行处理 gcc -E main.c -o main.i 2.编译阶段(Compilation) 把预处理完的文件进行一系列的词法分析,语法分析,语义...原创 2019-01-30 00:23:22 · 593 阅读 · 0 评论 -
可变参数模板(C++11)
可变模版参数(variadic templates) 是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。 模板参数包 template&amp;lt;typename... A&amp;gt; class Car; //typename...就表示一个模板参数包。可以这么来实例化模板: Car&amp;lt;int, char&amp;gt; car; 包扩展 //更加具体...原创 2018-12-01 21:16:14 · 14434 阅读 · 1 评论 -
右值引用与完美转发(C++11)
右值引用 右值引用就是必须绑定到右值(一个临时对象、将要销毁的对象)的引用,一般表示对象的值。 右值引用是用来支持转移语义的。转移语义可以将资源 ( 堆,系统对象等 ) 从一个对象转移到另一个对象,这样能够减少不必要的临时对象的创建、拷贝以及销毁,能够大幅度提高 C++ 应用程序的性能。临时对象的维护 ( 创建和销毁 ) 对性能有严重影响。 为什么使用右值引用? 首先为了不拷贝大对象,所以使用引用...原创 2018-12-01 19:34:23 · 661 阅读 · 0 评论 -
用vector建堆
这里用最大堆为例 建堆 vector<int> vec = {3,5,7,4,9,1,4,5,8}; make_heap(vec.begin(), vec.end(), greater<int>() );//1 3 4 4 5 7 9 5 8//greater用法和sort一样,greater指升序,这里指最小堆 make_heap(vec.begin(), vec.e...原创 2018-11-17 17:30:37 · 569 阅读 · 0 评论 -
智能指针 (C++11)
shared_ptr shared_ptr允许有多个指针指向同一个对象。 每个share_ptr都有一个关联的计数器,通常称为引用计数(reference count)。拷贝一个shared_ptr,计数器递增。 当指向的最后一个shared_ptr被销毁时,是调用析构函数来完成销毁工作的,析构函数会先递减它所指向的对象的引用计数,再检查引用计数值,如果引用计数变为0,那么shared_ptr析构...原创 2018-11-08 22:28:03 · 268 阅读 · 0 评论 -
list-initialization(C++11)
C++11开始可以这样 std::vector v = { 1, 2, 3, 4 }; template &amp;lt;class T&amp;gt; class M{ public: M(const std::initializer_list&amp;lt;T&amp;gt; &amp;amp;v) { for (auto i : v) { vec.push_back(i);原创 2018-11-07 19:16:27 · 505 阅读 · 0 评论 -
关于迭代器失效
(前置技能)关于++i和i++ i++的过程:先拷贝一份原始值至另外的内存地址中,然后这份被拷贝的原始值应用于后续的计算过程中,然后自身加1; ++i的过程:先自增,然后把自增后的值拷贝一份到另外的内存地址中,这份被拷贝的值应用于后续计算。 set,map的迭代器失效 typedef map&amp;amp;amp;lt;int, int&amp;amp;amp;gt; Map; typedef map&amp;amp;amp;lt;int, int&原创 2018-10-29 23:35:07 · 165 阅读 · 0 评论 -
C++ 杂记
Manipulator fixed //用定点符号表示浮点数 left right //居左/右 oct dec hex //进制 scientific //科学计数法 setfill(c) //用c做填充字符 setprecision(n) //精度为n位 setw(n) //字段位数 showpoint //小数点和末尾0 showpos //非负数前面+号 skipws //忽略输入前空格 ...原创 2019-01-27 17:38:44 · 512 阅读 · 0 评论