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 407.

 重要数据类型

 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(世界协调时间)的细分时间

     注意:localtimegmtime,前者比后者多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 本地的AMPM的等价显示

     %r 2小时的时间

     %R 显示小时和分钟:hh:mm %S 十进制的秒数

     %t 水平制表符 %T 显示时分秒:hh:mm:ss

     %u 每周的第几天,星期一为第一天 (值从06,星期一为0

     %U 第年的第几周,把星期日做为第一天(值从053

     %V 每年的第几周,使用基于周的年

     %w 十进制表示的星期几(值从06,星期天为0

     %W 每年的第几周,把星期一做为第一天(值从053

     %x 标准的日期串

     %X 标准的时间串

     %y 不带世纪的十进制年份(值从099

     %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

原文地址:https://www.cnblogs.com/jasonxu19900827/p/5964588.html