1.namespace 命令空间的用法
应用场景:重名变量,重复函数(不同的库)
使用:
(1): 可以嵌套
(2):默认命名空间,全局作用域
(3):不同命名空间的变量,可以重复
语法:
namespace Name
{
namespace Internal
{
/*....*/
}
/*...*/
}
使用:
使用整个命名空间:using namespace name;
使用命名空间的变量: using name::variable
使用默认命名空间的变量: ::variable
2: c++函数后边跟:冒号
构造函数后加冒号是初始化表达式:
有四种情况下应该使用初始化表达式来初始化成员:
(1):初始化const成员
(2):初始化引用成员
(3):当调用基类的构造函数,而它拥有一组参数时
(4):当调用成员类的构造函数,而它拥有一组参数时。
3:system(“PAUSE”)
system是C函数库stdlib.h、process.h中的一个函数。具体解释如下:
int system(char *command):将MSDOS命令command传递给DOS执行。
而pause是DOS下的一个命令。功能是:暂停批处理的执行,显示一个中文信息:“请按任意键继续. . .”,或者英文信息:“Press any key to continue . . .”
4.c++中的.hpp文件
使用:hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。
而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,
采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库
(1)不可包含全局对象和全局函数
由于hpp本质上是作为.h被调用者include,所以当hpp文件中存在全局对象或者全局函数,而该hpp被多个调用者include时,将在链接时导致符号重定义错误。要避免这种情况,需要去除全局对象,将全局函数封装为类的静态方法。
(2)类之间不可循环调用
(3) 不可使用静态成员
5 求均值
double sum = std::accumulate(std::begin(resultSet), std::end(resultSet), 0.0);
double mean = sum / resultSet.size(); //均值
double accum = 0.0; std::for_each (std::begin(resultSet), std::end(resultSet), [&](const double d) { accum += (d-mean)*(d-mean); });
double stdev = sqrt(accum/(resultSet.size()-1)); //方差
[std::for_each](http://www.cplusplus.com/reference/algorithm/for_each/)
std::vector简介及其使用
6 将vector 转换为数组
memcpy(arry_laser_vaild, &Ones_laser[0], Ones_laser.size()*sizeof(float));
//arry_laser_vaild指的内存地址的起始位置开始拷贝Ones_laser.size()*sizeof(float))个字节到目标&Ones_laser[0]所指的内存地址的起始位置中
//arry_laser_vaild要复制的数组
//&Ones_laser[0],要被复制位置的起始位置指针
//Ones_laser.size()*sizeof(float)),要被复制数据的字节大小
7 c++ 中的<>作用
参考链接
库里面的函数模板,在编译过程时把数据通用类型实例化