标签: C/C++

10 篇文章

使用模板类为什么出现“unresolved external symbol”?
在使用模板类时,如果将模板类的声明和实现分别放在.H和.CPP文件中的话,在使用该模板类时会遇到连接错误:“Wunresolved external symbol”。 原因如下:模板类、模板函数直到其被使用时才会实例化,当一个模板类被使用时,编译器需要其成员函数的完整代码才可以建立指定类型的函数版本。然而,当函数实现在额外的.CPP文件中时,编译器…
不使用临时变量交换两个变量的值
使用异或操作可以在不使用临时变量的情况下交换两变量的值。 异或操作符:^。 对于位操作:0^0=0, 1 ^ 1 = 0, 0 ^ 1 = 1 ^ 0 = 1。 对于一个变量a:a ^ a = 0; a ^ 0 = a。 #include void swap(int &a, int &b) { a = a ^ b; // a'…
线性时间排序(计数排序、基数排序、桶排序)
多少排序算法都是基于对序列中的元素进行比较操作来完成排序的,称这些排序算法为比较排序。如:快速排序(平均时间复杂度[latex]\Theta(n\lg{n})[/latex],最坏时间复杂度[latex]\Omega(n\lg{n})[/latex]),随机快速排序([latex]\Theta(n\lg{n})[/latex]),合并排序([lat…
快速排序
原始QuickSort算法: 算法平均复杂度:[latex]\Theta(n\lg{n})[/latex](一般情况下) 算法在最坏情况下的复杂度:[latex]\Theta(n^2)[/latex](在输入序列为排列好的数的情况下) 在实际应用中,快速排序算法通常比归并排序算法快三倍左右。 // 数组划分子程序 int Partition(int…
斐波那契数列
斐波那契数列由以下的公式定义: $$!F_n=\begin{cases}0 & ,n=0 \\1 & ,n=1 \\F_{n-1} + F_{n-2} & ,n\geq2\end{cases}$$ 1. 递归法(最慢) 时间复杂度:$$T(n)=\Omega(\varphi^n)$$指数级。 // 输出斐波那契数列下标为n的…
二分查找
问题描述:在有序数列中查找某个指定数。 #include #include using namespace std; // 二分查找(递归法) // (data[]中存储的是生序排列的数据, target为待查找数据) int BinarySearch(int *data, int start, int end, int target) { int…
插入排序
#include #include using namespace std; // 插入排序 void InsertSort(vector &data) { for (int i=1; i!=data.size(); ++i) { int key = data[i]; // 暂存第i个元素的值。 int j = i-1; while (j&…
C语言中嵌套结构体的初始化问题
1. C语言中的结构体可以在声明时在等号后面使用花括号"{}"进行初始化操作,如下所示: struct _NUM { int a; int b; }; _NUM test = {2, 3}; // 使用花括号对结构体进行初始化 2. 嵌套结构体也可以通过类似的方式进行初始化 // initialization of nested struct in…