C++
Icarus_
会一点Android
展开
-
decltype的使用
在C++中,decltype作为操作符,用于查询表达式的数据类型。decltype在C++11标准制定时引入,主要是为泛型编程而设计,以解决泛型编程中,由于有些类型由模板参数决定,而难以(甚至不可能)表示之的问题。泛型编程在整个1990年代越发流行,对实现类型推导机制的需求也应运而生。为此,许多编译器厂商都基于程序语言现有的功能,自行实现了这类操作符,其实现如typeof,以及一些功能有限,但转载 2016-01-25 11:21:00 · 1862 阅读 · 0 评论 -
弗洛伊德算法求最短路径
1,从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。2,对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新它。把图用邻接矩阵G表示出来,如果从Vi到Vj有路可达,则G[i,j]=d,d表示该路的长度;否则G[i,j]=无穷大。定义一个矩阵D用来记录所插入点的信息,D[i,j]表示从Vi到原创 2016-02-14 16:24:47 · 4520 阅读 · 1 评论 -
广度优先搜索的学习
同样也是用一个迷宫的例子#includeusing namespace std;struct note{ int x;//横坐标 int y;//纵坐标 int s;//步数};int main() { struct note que[2501];//设地图50X50,所以队列2500 int a[51][51] = { 0 };//地图 int book[51][51]原创 2016-02-10 12:01:49 · 353 阅读 · 0 评论 -
深度优先搜索的学习
解决深度优先搜索关键在于“当下该如何做”到”下一步该如何做“。通常是把每一种方法都尝试一遍,当这一步解决后进行下一步。基本模型:void dfs(int step){ 判断边界 尝试每一种可萌 for(int i=1;i<=n;i++){ 继续下一步 } 返回}举例:输入一个数n,输出1~n的全排列/*全排列问题,举个例子就是有几张牌放在原创 2016-02-05 14:18:09 · 468 阅读 · 0 评论 -
快速排序
简单的快速排序C++语言实现#includeusing namespace std;int a[100], n;void qsort(int left, int right) { int i, j, t,temp; if (left > right) return; temp = a[left]; i = left; j = right; while (i != j) {原创 2016-03-02 19:42:06 · 357 阅读 · 0 评论 -
C++迭代器(iterator)的简单使用
迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取数据原创 2016-03-20 20:41:02 · 9761 阅读 · 0 评论 -
C++向量容器vector的使用
详细介绍在代码中#include#includeusing namespace std;int main() { vector sample(3, 5);//定义一个向量,赋值3个5 vector intv; vector vs; int temp; cin >> temp; while (temp != 0) { intv.push_back(temp);//将temp原创 2016-03-20 18:25:16 · 1217 阅读 · 0 评论 -
简单插入排序
简单的插入排序函数 for (i=1;i<n;i++)//第一个数已经有序 { temp=a[i];//temp用来保存待插入的数 for (j=i-1;j>=0&&a[j]>temp;j--)//边判断边保存 a[j+1]=a[j]; a[j+1]=temp; }原创 2016-03-02 20:15:35 · 343 阅读 · 0 评论 -
简单的链表实现
目前还不完善,慢慢加入新功能#include#includeusing namespace std;struct node{ int data; struct node *next;};int main() { int a,n; struct node *head,*p,*q,*t; head = NULL; q = NULL; cout << "请输入元素个数"原创 2016-02-03 16:24:35 · 445 阅读 · 0 评论 -
用栈判断回文
#include#includeusing namespace std;int main() { string a; char s[100]; int min, next, top,len,mid; cin >> a; len = a.length();//求出栈的长度 mid = len / 2;//中间断开的位置 top = 0; for (int i = 0; i <原创 2016-02-02 20:52:42 · 1030 阅读 · 0 评论 -
图的广度优先遍历
将图表示为邻接矩阵#includeusing namespace std;int main() { int i,j,n, m, e[100][100], book[100] = { 0 }, cur, a, b; int que[10000], head, tail; cout << "输入元素个数和顶点之间的边的个数" << endl; cin >> n >> m; for (原创 2016-02-11 20:44:31 · 476 阅读 · 0 评论