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
指针可以共享, 即可以由多个指...
共计 492 篇文章,62 页。
您是Zorch的第 个小伙伴
Hits