C++ 语法积累20161015
1、break 作用:用于终止当前循环(跳出循环体)。
遇到最多的应该是在双层循环体中的使用:
(1)在内循环体中,遇到break,则直接跳出内循环体,再次执行外循环体。
(2) 在外循环体中,break 与 内循环体并行,遇到并跳出外循环体。
注:break 用于switch 语句中,则直接跳出switch
break 不能直接用于if中,除非if属于循环的一个句子,但此时他的作用是循环,而不是if
参考:
http://blog.csdn.net/wfz0704112/article/details/8550230
http://blog.csdn.net/u010738823/article/details/48896077
2、ctime 头文件
“时间”和“日期”的概念
Coordinated Universal Time(UTC):
协调世界时,又称为世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT).比如,中国内地的时间与UTC的时差为+8,也就是UTC+8.美国是UTC-5
Calendar Time:
日历时间:是用“从一个标准时间点到此时的时间经过的秒数”来表示的时间.这个标准时间点对不同的编译器来说会有所不同,但对一个编译系统来说,这个标准时间点是不变的,该编译系统中的时间对应的日历时间都通过该标准时间点来衡量,所以可以说日历时间是“相对时间”,但是无论你在哪一个时区,在同一时刻对同一个标准时间点来说,日历时间都是一样的.epoch:时间点时间点在标准C/C++中是一个整数,它用此时的时间和标准时间点相差的秒数(即日历时间)来表示
clock tick:
时钟计时单元(而不把它叫做时钟滴答次数),一个时钟计时单元的时间长短是由 CPU 控制的.一个 clock tick 不是CPU 的一个时钟周期,而是C/C++的一个基本计时单位.
重要的宏
CLOCKS_PER_SEC
说明:每秒钟的滴答数
定义:
#define CLOCKS_PER_SEC ((clock_t) 000)
用途:它用来表示一秒钟会有多少个时钟计时单元
clock_t
说明:滴答计数类型
定义:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
注意:其中clock_t是用来保存时间的数据类型
time_t
说明:日历时间的秒计数
定义:
#ifndef __TIME_T
#define __TIME_T //避免重复定义 time_t
typedef long time_t; //时间值time_t 为长整型的别名
#endif
注意:对time_t数据类型的值来说,它所表示的时间不能晚于2038年 月 8日 9时 4分07秒.
重要数据类型
struct tm
说明:年月日等得细分时间数据结构
struct tm{
int tm_sec; //Seconds. [0-60] ( leap second)
int tm_min; //Minutes. [0-59]
int tm_hour; //Hours. [0-23]
int tm_mday; //Day. [ -3 ]
int tm_mon; //Month. [0- ]
int tm_year; //Year - 900.
int tm_wday; //Day of week. [0-6]
int tm_yday; //Days in year.[0-365]
int tm_isdst; //DST. [- /0/ ]
#ifdef __USE_BSDlong int tm_gmtoff; //Seconds east of UTC.
__const char *tm_zone; //Timezone abbreviation.(时区缩写)
#elselong int __tm_gmtoff; //Seconds east of UTC.
__const char *__tm_zone; //Timezone abbreviation.
#endif
};
函数
clock 函数
原型:clock_t clock( void );
作用:返回本程序自启动来,流逝的时钟计时单元.
difftime 函数
原型:double difftime( time_t timer ,time_t timer0 );
作用:返回两个日历时间之差timer -timer0;
time 函数
原型:time_t time( time_t *timer );
作用:获取机子的时间
注意:如果,timer不为空,则同时将返回值赋给timer指向的变量.
mktime 函数
原型:time_t mktime(struct tm *timeptr );
作用:将由年月日时分秒等构成的细分时间转换为流逝秒数构成的日历时间.
localtime 函数
原型:struct tm *localtime(const time_t *timer);
作用:将日历时间转换为本地细分时间
gmtime函数
原型:struct tm *gmtime( const time_t *timer);
作用:将日历时间转换为UTC(世界协调时间)的细分时间
注意:localtime与gmtime,前者比后者多8个小时
asctime函数
原型:char *asctime( const struct tm *timeptr );
作用:将细分时间转换为简写字符串
ctime函数
原型:char *ctime( const time_t *timer );
作用:将日历时间转换为简写字符串
strftime函数
原型:size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );
作用:将细分时间按format的格式要求格式化到strDest指向的缓冲区
函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中.格式化命令说明串strDest中各种日期和时间信息的确切表示方法.格式串中的其他字符原样放进串中.格式命令列在下面,它们是区分大小写的
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月/天/年
%e 在两字符域中,十进制表示的每月的第几天
%F 年-月-日
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 2小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 2小时的时间
%R 显示小时和分钟:hh:mm %S 十进制的秒数
%t 水平制表符 %T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)
%U 第年的第几周,把星期日做为第一天(值从0到53)
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从0到6,星期天为0)
%W 每年的第几周,把星期一做为第一天(值从0到53)
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从0到99)
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符.%% 百分号
关系图

应用
#include <iostream>
#include <ctime>
using namespace std;
//定义宏来计算算法所消耗的时间(毫秒级)
// "\" 符号:继续符。表示本行与下一行连接起来
#define BEGIN_RECODE \
{ \
clock_t __temp_begin_time__ ; \
__temp_begin_time = clock(); \
#define END_RECODE(dtime) \
dtime = float(clock() - __temp_begin_time__)/CLOCKS_PER_SEC;\
}
int main()
{
float tim;
int i; for (i = 0; i < 100000; i++)
{
a[i] = int(rand() % 100000);
} cout << "10W个数的希尔排序:" << endl; BEGIN_RECORD shellSort2(a, sizeof(a)/sizeof(int)); END_RECORD(tim) cout << "希尔增量序列运行时间:" << tim << "s" << endl; for (i = 0; i < 100000; i++)
{
a[i] = int(rand() % 100000);
}
BEGIN_RECORD shellSort(a, sizeof(a)/sizeof(int)); END_RECORD(tim) cout << "Hibbard增量序列运行时间:" << tim << "s" << endl; cin.get();
return 0;
}
参考
http://www.cnblogs.com/dongzhuangdian/p/5468608.html
http://www.cnblogs.com/kzloser/archive/2012/07/17/2594773.html
http://www.cnblogs.com/leoin2012/p/3910889.html
C++ 语法积累20161015的更多相关文章
- C#编程语法积累(二)
9.Lambda表达式 [1]Lambda表达式缩写推演,如下图: [2]Lambda语句:=>右边有一个语句块(大括号"{}"):Lambda表达式:=>右边只有一个 ...
- C#编程的语法积累(一)
1.自动属性 之前的实现方式: private int id; public int Id { set {id = value;} get {return id;} } 现在可通过自动属性实现: pu ...
- mysql 语法积累
1.把一个表中的某一列赋值到另一个表中的某一列 update sfa_token,sfa_member set sfa_token.mainid = sfa_member.mainid where s ...
- smali语法积累记录
1.constructor 我们知道运行一个类的时候会先调用static方法中的内容,比如: static { System.loadLibrary("qihooTest"); } ...
- 从0到1,教你实现基于Ruby的watir-webdriver自动化测试
一.为什么选择Ruby []完全开源. []多平台:Ruby可以运行在Linux, UNIX, Windows, MS-DOS, BeOS, OS/.. []多线程:线程就是指在一个程序中处理若干控制 ...
- GIS初学者
学习编程一直以来没有什么好的思路,感觉就是学了忘,忘了再重复,效率特别低下.大概是从大三第一学期才有意识的转向c#的学习,来熟悉VS2010平台,在这之前我都不知道自己是怎么学习的. 大一第二学期开的 ...
- # Python 3 & 爬虫一些记录
目录 Python 3 & 爬虫一些记录 交互模式和命令行模式 函数积累 语法积累 列表和元组 输入 交互模式下输入多行 爬虫 HTTP报文请求头User-Agent信息 解析库pyquery ...
- JAVA知识积累 JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】
什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...
- sql 列设置默认值,语法查询知识点积累
一.修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 add constraint 约 ...
随机推荐
- forword和重定向有什么区别?
一.forword 1.请求只能从同一个web中转发,当前应用之外的找不到. 2.地址栏不变. 3.共享request对象,请求链不断. 4.永久性跳转,最常用. 5.客户端方法功能跳转 二.重定向 ...
- AsyncTask的工作原理
AsyncTask是Android本身提供的一种轻量级的异步任务类.它可以在线程池中执行后台任务,然后把执行的进度和最终的结果传递给主线程更新UI.实际上,AsyncTask内部是封装了Thread和 ...
- android learning
https://www.cnblogs.com/kangjianwei101/p/5621238.html https://blog.csdn.net/write6/article/details/7 ...
- samba服务器的安装与配置(之前是因为没有把共享文件权限放开!)(windows7和centOS6)
注:centOS6跟centOS7安装方法不一样哦.以下是centOS6的安装过程. 安装:yum -y install samba 启动:/etc/init.d/smb start 设置开机启动:c ...
- 现在就启用 HTTPS,免费的!
现在就启用 HTTPS,免费的! 现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什 ...
- day 09 课后作业
# -*- coding: utf-8 -*-# @Time : 2018/12/28 14:25# @Author : Endless-cloud# @Site : # @File : 08 课后作 ...
- ORACLE Sequence 自增长
Sequence是数据库系统按照一定规则自动增加的数字序列.这个序列一般作为代理主键(因为不会重复),没有其他任何意义. Sequence是数据库系统的特性,有的数据库有Sequence,有的没有.比 ...
- 使用Docker构建jdk1.8镜像
一.下载centos镜像 下载自己需要的版本TAG,详见: docker安装指定版本TAG的镜像 $ sudo docker pull centos:centos7 二.下载jdk1.8,并上传到/u ...
- 3.3 PXC Strict Mode
摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...
- 6、TensorFlow基础(四)队列和线程
队列和线程 和 TensorFlow 中的其他组件一样,队列(queue)本身也是图中的一个节点,是一种有状态的节点,其他节点,如入队节点(enqueue)和出队节点(dequeue),可以修改它的内 ...