摘要:一、简介 本文介绍了如何在C++中,根据编译类型的不同(Debug或者Release)规定代码执行不同的行为,使用 NDEBUG宏实现该目标。 二、代码示例 main.cpp文件代码: #include <iostream> #if NDEBUG void fun() { std::cout <<
阅读全文
摘要:一、问题提出 假如使用nvcc对cuda代码进行编译时,如果代码中使用了Eigen库(头文件),编译时可能会显示很多warning information,如下图红框中所示: 这些warning信息虽然不会影响代码的实际运行,但会令编译提示很乱,不便于按照编译器给出的信息进行debug。 本文将介绍
阅读全文
摘要:一、摘要 C++的<numeric>头文件中包含了一系列可用于操作数值序列(sequences of numeric value)的函数,通过修改函数的参数类型也可以将这些函数应用到非数值序列中。熟练使用<numeric>中的函数可以方便地对例如vector<>,list<>等容器进行数值计算。 在
阅读全文
摘要:一、摘要 vector是c++中一类经常用到的容器类,与数组相比vector类中存在一些内部函数,配合<algorithm>头文件中的函数可以方便地对vector进行插入、删除等操作。 对于存储非指针类型(例如int、float)的vector可以使用赋值操作符=、循环遍历push_back()函数
阅读全文
摘要:一、摘要 在算法竞赛题目和平时的编程中经常会遇到处理字符串的问题,常用的方法是使用string类处理字符串。但是在一些C语言版本的函数中智能处理char类型的字符串,因此掌握string与char类型数据转换会提供很大的便利。本文第二部分简要介绍了C++中string、char*和char[]之间的
阅读全文
摘要:一、摘要 二分算法是经常使用的算法之一,熟练使用二分算法是一个程序员的基本素养。C++的<algorithm>头文件中存在lower_bound()和upper_bound()函数,支持在已排好序的容器中查找首个大于等于或者大于目标元素的迭代器位置。同时在有序容器类,例如set<>和map<>,也存
阅读全文
摘要:一、对于VS Code的介绍 首先需要明确的一点是VSCode并不是一个标准意义上的IDE(Integrated Development Environment,集成开发环境),VSCode更像是一个功能强大的编辑器。 因此与VS、Pycharm等针对特定语言或某类语言的IDE不同,使用VSCode
阅读全文
摘要:一、摘要 对于满足指定分布的自由变量,如果无法通过分布函数公式计算得到其期望和方差,可以考虑使用采样法得到其期望、方差值的近似值。在此过程中需要按照特定的分布函数进行随机采样,并统计采样数据,可以使用蒙特卡洛或者接受拒接方法得到满足特定分布的随机变量。本文简要介绍了如何使用C++random头文件中
阅读全文
摘要:一、背景 在做leetcode题目时很多题都需要使用优先队列(堆),并需要使用自定义数据类型、自定义有限队列的排序方式。本文对priority_queue的自定义排序方式做了总结。本文可能并不能覆盖所有自定义方式,若读者有建议或本文存在纰漏,请在本文下留言,不胜感激。 二、priority_queu
阅读全文
摘要:一、摘要 这是我个人的树状数组模板记录,对于其他人可能没有借鉴意义。 二、代码 // 树状数组类 // 下标从1开始 class BinaryIndexedTree{ public: // 构造函数,初始化数据数组c_,大小为总数据个数+1 BinaryIndexedTree(int n){ c_.
阅读全文
摘要:一、摘要 本文介绍了一种使用<string>头文件中的getline()函数和一种使用istream_iterato<T>模板类进行字符串分割的方法。 二、代码 1. 使用getline()函数 #include <iostream> #include <vector> #include <stri
阅读全文
摘要:一、背景 本文介绍了如何使用C++按字节读取.txt文件。本文第二部分为代码实例和对代码的解释,第三部分为本文的参考文章。 二、代码实例 #include <iostream> #include <fstream> using namespace std; int main() { // 打开文件t
阅读全文
摘要:一、背景 使用fstream和sstream头文件读取文本文件。实现按行读取或者按照空格分隔读取。 二、代码 按行读取文件内容 int main() { ifstream input_file("file.txt"); if (!input_file.good()) { cout << "open
阅读全文
摘要:一、set定义 c++官方对set的定义如下: Set:Sets are containers that store unique elements following a specific order. Set:set是一类用来存储满足一定排序的独一元素的容器。 类模板如下: template <
阅读全文
摘要:一、问题提出 1.自定义比较函数的sort 我们可以使用自定义的cmp函数、lambda函数或者less< >()、greater< >()作为自定义compare对象参数传给sort()函数,达到自定义比较顺序的结果。代码如下: 使用自定义cmp函数 bool cmp(const int &a,
阅读全文
摘要:一、背景 之前在刷pat题时遇到过自定义sort中的cmp函数时,当排序数据过多时可能发生段错误。查询资料后发现是我写的自定义cmp函数中,当两个元素相等时返回的true,而产生了bug。当时只是大概知道只是因为sort的cmp函数要求 严格弱排序(strict weak order),具体的原因并
阅读全文
摘要:一、题意 There is a classical process named partition in the famous quick sort algorithm. In this process we typically choose one element as the pivot. Th
阅读全文
摘要:一、题意 Given the head of a linked list, we repeatedly delete consecutive sequences of nodes that sum to 0 until there are no such sequences. After doing
阅读全文
摘要:一、题目 Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder an
阅读全文
摘要:一、题目: A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only
阅读全文