质数筛法:埃氏筛和欧拉筛 质数数筛法 本文主要介绍埃氏筛法和欧拉筛法。 判断单个数是不是质数 1234567891011121314bool isPrime(int num){ if(num == 1) return 0; if(num==2 || num==3) return 1; if(num%6 != 1 && num%6 != 5) return 0; int tmp = sqrt( 2023-03-06 数据结构与算法 #算法
C++左值和右值 理解 C/C++ 中的左值和右值 我们在 C/C++ 编程中并不会经常用到 左值 (lvalue) 和 右值 (rvalue) 两个术语。然而一旦遇见,又常常不清楚它们的含义。最可能出现两这个术语的地方是在编译错误或警告的信息中。例如,使用 gcc 编译以下代码时: 12345678int foo() {return 2;}int main(){ foo() = 2023-03-04 C++ #C++
C++ auto与decltype:类型推导 Modern C++ 之 auto 与 decltype : 类型推导 auto 与 decltype : 类型推导 变量类型推导其实在 C++ 中一直存在, 例如我们在使用泛型函数时编译器将帮助我们隐式地推导参数类型 : 123template<typename _Type>void func(_Type value) { /* do something */ } 2023-03-04 C++ #C++
C++智能指针 详解 C++ 11 中的智能指针 C/C++ 语言最为人所诟病的特性之一就是存在内存泄露问题,因此后来的大多数语言都提供了内置内存分配与释放功能,有的甚至干脆对语言的使用者屏蔽了内存指针这一概念。这里不置贬褒,手动分配内存与手动释放内存有利也有弊,自动分配内存和自动释放内存亦如此,这是两种不同的设计哲学。有人认为,内存如此重要的东西怎么能放心交给用户去管理呢?而另外一些人则认为,内存如此重要的东西 2023-03-04 C++ #C++
C++ STL 容器以及常用操作 vector容器 C++ STL vector 是一个动态数组容器,它可以在运行时调整大小,并且支持随机访问。以下是 vector 常用的基本操作: 创建vector 12345678#include <vector>std::vector<int> v; // 创建一个空 vectorstd::vector<int> v(size); 2023-03-02 C++ #C++ #STL
二叉树 什么是二叉树 二叉树是一种常见的数据结构,它是每个节点至多有两棵子树的树。 二叉树有两种特殊的形式,满二叉树和完全二叉树。 满⼆叉树:如果⼀棵⼆叉树只有度为0的结点和度为2的结点,并且度为0的结点在同⼀层上,则这棵⼆叉树为满⼆叉树。一棵深度为k的满二叉树节点个数为\(2^k -1\)。 完全⼆叉树:至多只有最下面的两层结点的度数可以小于2, 并且最下一层上的结点都集中在该层最左边的若干位置上, 则 2023-03-01 数据结构与算法 #数据结构与算法 #leetcode
C++ STL-unordered_map中自定义哈希函数 unordered_map中自定义哈希函数 内容转载自c++ unordered_set,unordered_map中自定义哈希函数 如果想用哈希的时候,但是哈希的目标又不再STL标准的类型内,比如一个自定义的class,就不太方便使用STL默认的哈希函数,比较函数,那么就需要重写了。 将自定义类型作为unordered_map的键值,需如下两个步骤: 定义自定义key的哈希函数的函数对象,告知 2023-02-24 C++ #C++ #STL
C++ lambda函数用法 Lambda表达式(也叫lambda函数,或简称lambda),是从C++ 11开始引入并不断完善的,是能够捕获作用域中变量的匿名函数对象。因为C++是不能嵌套定义函数的,所以lambda就成了我们构造闭包的主要手段,不过在对象的生命周期上还是有点不同。 Lambda基本语法 lambda基本语法 当定义一个lambda时,编译器生成一个与lambda对应的新的(未命名的)类类型。下面对重要 2023-02-24 C++ #C++
C++ std::accumulate函数用法 accumulate定义在#include中,有两种用法,一个是累加求和,另一个是自定义类型数据的处理 默认累加求和 12template< class InputIt, class T >T accumulate( InputIt first, InputIt last, T init ); 自定义对数据的处理 123template< class InputIt, class 2023-02-24 C++ #C++
hexo中数学公式换行问题 Hexo 书写 LaTeX 公式时的一些问题及解决方法 使用hexo撰写博客的时候难免会用到数学公式,,如果公式过长,我们通常希望把方程分成多行显示,这时候就需要用到换行符号\\,但是写出来的 Markdown 经过 Hexo 的处理以后显示不正确,这与 Hexo 的渲染引擎有关系。 Hexo 的自带的 Markdown 引擎并不支持 LaTeX 公式。 但是 MathJax 支持,因此首先要启用 2023-02-19 #latex #杂 #mathjax