C++11回顾学习(2): 一些常用的函数和小技巧

1.C++常用函数

  • uniform_real_distribution —[2]
	//uniform_real_distribution 类模板定义了一个默认返回 double 型浮点值的连续分布。可以按如下方式生成一个返回值在范围 [0,10) 内的分布对象:
		#include <random>
		
		std::uniform_real_distribution<> values {0.0, 10.0};
		std::random_device rd; 	// Non-de terrains tic seed source
		std::default_random_engine rng {rd()};  	// Create random number generator 
		for(size_t i {}; i<8; ++i)
			std::cout << std::fixed << std::setprecision(2)<< values (rng) <<" ";
	    // 8.37 6.72 6.41 6.08 6.89 6.10 9.75 4.07
  • C++取整函数ceil(), floor() —[3]
		#include <math.h>
		floor()是向负无穷大舍入,floor(-10.5) == -11ceil()是向正无穷大舍入,ceil(-10.5) == -10
		double pow(double x, double y)  ## 返回x的y次幂
  • C++定义常量的两种方法
		"常量:在程序执行期间不会改变的变量."
		#define  SCREEN_DIGITAL 100
		const int SCREEN_DIGITAL = 100;

2.设置全球唯一标识(ID)

	#include <boost/uuid/uuid.hpp>
	#include <boost/uuid/uuid_io.hpp>
	#include <boost/uuid/uuid_generators.hpp>
	
 	// 就算将以下两行放入for循环中,依然可行,不会产生重复ID;亦可获取多个生成器同时执行ID获取!;
	boost::uuids::uuid a_uuid = boost::uuids::random_generator()();    // 这里是两个() ,因为这里是调用的 () 的运算符重载
	const string tmp_uuid = oost::uuids::to_string(a_uuid);

3.设置时间轴,查询程序运行的时间间隔

	
	#include <chrono>
	
	const auto t1 = std::chrono::steady_clock::now();  ## 设置时间记录
		--"主程序运行的代码函数片段"--
	const auto t2 = std::chrono::steady_clock::now();
	
	const auto duration12 = std::chrono::duration_cast<std::chrono::microseconds>(t2 - t1).count();   ## 获取时间间隔(微秒)
		>	转成秒:*1e-3

4.C++头文件避免include的两种方式

	"方式一:"
	#ifndef SOME_UNIQUE_NAME_HERE
	#define SOME_UNIQUE_NAME_HERE
     
    // contents of the header
    ...
     #endif // SOME_UNIQUE_NAME_HERE
---
	"方式二:"
	#pragma once
两种方式的比较:

F1: #ifndef方式依赖于宏名不能冲突。它不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。缺点是如果不同头文件中的宏名不小心”碰撞”,可能就会导致你看到头文件明明存在,编译器却硬说找不到声明的状况。由于编译器每次都需要打开头文件才能判定是否有重复定义,因此在编译大型项目时,#ifndef会使得编译时间相对较长.

F2: #pragma once 一般由编译器提供保证:同一个文件不会被包含多次。这里所说的”同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。无法对一个头文件中的一段代码作#pragma once声明,而只能针对文件。此方式不会出现宏名碰撞引发的奇怪问题,大型项目的编译速度也因此提供了一些。缺点是如果某个头文件有多份拷贝,此方法不能保证它们不被重复包含。

5. 一个好用的文档工具

	doxygen  
	// 可以使用gui工具生成类似官方文档的html,可以直接在浏览器打开阅读,
	// 对于阅读中型库具有一定参考作用
	doxywizard
	// 安装: sudo apt-get install doxygen doxygen-gui

参考链接

1.C++产生全球唯一表示UUID

2.C++11标准生成随机数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱发呆de白菜头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值