主页

C++写出像python那样优雅的一行交换函数

写在前面 众所周知, Python中交换两个数可以用: a, b = b, a 十分优雅, 那么C++可以这样吗? C++11告诉你, 能! tie(a, b) = pair(b, a); 测试一下: #include <iostream> using namespace std; int main(int argc, char const *argv[]) { int a = 10, b = 20; cout << a << " " << b << endl; tie(a, b) = pair(b, a); cout << a << " " <&...

阅读更多

快速排序算法的递归,迭代法实现(c++)

思路 分治法 主要分成下面三个步骤: 选定基准值(默认是数组首元素), 这里称为pivot 找到基准值待放置的位置(排序之后的位置), 将大于基准值的元素放在基准值后面, 小于的放在前面 递归上述过程. 代码(递归) 下面这种方法是算法导论给出的, 先写子数组处理函数, 再给出递归过程. pivot取最右边元素: int Partition(vector<int> &arr, int l, int r) { /*i: the number of left side of x */ int x = arr[r], i = l - 1; for (int j = l; j < r; ++j) if...

阅读更多

冒泡排序,插入排序,选择排序的c++实现

写在前面 总结一下经典的排序算法, 这次是基本排序算法, 冒泡插入和选择, 加上自己的理解与C++实现. 辅助代码 这里给出了输出数组的函数, 通过STL的vector来完成. #include <iostream> #include <vector> using namespace std; void printArray(const vector<int>& arr) { for (size_t i = 0; i < arr.size(); ++i) cout << arr[i] << " "; cout << endl; } 冒泡 最为经典的排序算法, 虽然时间复...

阅读更多

Mysql45讲题目

以下哪些场景中适合使用 QueryCache? 电商业务,库存表 游戏业务,积分表 ERP 系统,配置表 博客系统,点赞数表 QueryCache 只适用于静态的、更新量很少的表,只有 C 满足条件。 以下哪个操作可以提升 MySQL 主实例的查询性能? A 将 innodb_buffer_pool_size 从 10G 改成 12G B 将 sort_buffer_size 从 1M 改成 4M C 将 innodb_flush_log_at_trx_commit 从 1 改成 2 D 将 rpl_semi_sy...

阅读更多

C++实战笔记(三)异常处理

写在前面 简单总结一下C++异常处理部分(Exception). 异常只是C++为了处理错误提出的一种解决方案, 并不是唯一的一种. 异常处理 特点 异常处理的流程完全独立 异常不能被忽略, 必须被处理 异常可以用在错误码无法使用的场合中 错误类型的继承关系 总结自CPP Primer第五版 classDiagram direction LR Exception <-- runtime_error Exception <-- bad_cast Exception <-- bad_alloc Exception <-- logic_error runtime_erro...

阅读更多

Gitignore文件详解

写在前面 近期更新了一下自己的GitHub Pages博客, 但是发现上传到GitHub上面的文件中有很多奇奇怪怪的文件, 并且无关于博客的构建与生成. 之前倒是在阮一峰老师的技术周刊上面看到一篇文章1通过.gitignore文件去除MacOS下独有的索引文件.DS_Store文件, 但是感觉写的太简略了, 实在是没有到我心坎里, 下面根据另外几篇不错的文章23, 加上官方文档中的解释/示例4与自己的实践, 总结出本文, 校网能对同样热爱技术的大家有所帮助. 测试环境: MacOS .gitignore能干什么 通常,在项目上使用Git的工作时,您会希望排除将特定文件或目录推送到远程仓库库中的情况。.gitignore文件可以指定Git应该忽略的未跟踪文件。 ...

阅读更多

C++优先队列详解以及相应输出操作符重载写法

写在前面 优先队列模拟题最近常出, 记录一下学C++优先队列的一些代码与用法, 当然也有重载输出操作符的方法(优先队列的构造函数真奇怪). 参考std::priority_queue - cppreference.com; 基本用法 头文件与定义 需要包含queue头文件, 这里我还用到了输出类名的typeinfo. #include <iostream> #include <queue> #include <vector> #include <typeinfo> using namespace std; // 输出vector元素 ostream &operator<<(ostream &os...

阅读更多

C++实战笔记(二)智能指针与内存管理

写在前面 总结一下罗剑锋老师的C++实战课程中C++智能指针与内存管理的一些内容. API及示例部分参考了1. 智能指针概述 智能指针实际上是一个像vector一样的类模板, 所以不能使用Delete方法释放所指对象的内存, 因为智能指针可以自主管理初始化时候的指针, 在所指对象离开作用域时自动析构释放内存. 常见的智能指针有 shared_ptr unique_ptr weak_ptr 都定义在memory头文件中. 其他需要注意的点: 智能指针对象没有定义加减操作; 智能指针对象没有定义移动地址操作; 智能指针对象不可以先声明后解引用, 否则相当于解引用空指针, 造成内存问题; shared_ptr 指针可以共享, 即可以由多个指...

阅读更多

Total views.
您是Zorch的第 个小伙伴
Hits