
C++
文章平均质量分 84
cxsmarkchan
Electrical Engineering
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
array和list的排序算法对比(一):快速排序
一般来说,我们讨论排序都是针对数组结构。数组的特点是:可以很方便地进行随机访问,但是增删元素比较耗时。因此,针对数组的排序,通常会避免元素的增删操作,改为元素交换。同时,常采用二分的方法实现高效排序算法。 链表与数组相反,随机访问非常耗时,但增删元素很简单。因此链表的排序和数组也会有所不同。 这篇博客针对数组和链表的不同,分析了常用排序算法——快速排序在数组和链表中的实现。注:我们规定排序的语义原创 2016-03-08 23:41:08 · 4631 阅读 · 1 评论 -
C++运算符重载:怎样定义函数才“符合常理”
最近在尝试实现C++ STL库,遇到的一个很重要问题就是在容器、迭代器中的运算符重载。运算符重载看上去比较简单,但如果希望重载结果“符合常理”,即符合C++的运算习惯,也不是非常容易。这些问题通常出现在函数定义中:- 重载函数的返回值,是原类型、引用类型,还是常引用类型?- 重载函数的参数,是原类型、引用类型、常引用类型,还是右值引用类型?- 重载函数是否需要const标记?这篇博客主要讨论这些问题。原创 2016-03-15 18:12:13 · 695 阅读 · 0 评论 -
swap函数的高效实现:右值引用和move
原创内容:cxsmarkchan 转载请注明出处 右值引用是C++11的重要特性之一,合理采用右值引用,可以避免不必要的复制操作,提高程序运行的效率。本文以swap函数的实现为例,说明右值引用的相关应用。原创 2016-03-03 21:50:19 · 3021 阅读 · 4 评论 -
array和list排序算法对比(二):归并排序
归并排序的特点是采用二分的策略,将数组的子数组进行排序,然后将两个有序的子数组合并成一个大的有序数组。如果采用数组结构,二分是非常简单的操作,但二分后的合并空间开销相对较大。如果采用链表结构,合并的空间开销是相对较小的,但二分则需要精心设计。这也造成了两种数据结构在算法设计上会有一定的差别,复杂度也不同。原创 2016-03-10 21:58:04 · 923 阅读 · 0 评论