文档详情

C++代码编写实例.doc

发布:2017-03-24约字共16页下载文档
文本预览下载声明
风云三号卫星地面应用系统产品质量检验系统(QCS)业务软件开发项目 代码编写实例 QCS项目组 变更记录表 序号 变更时间 变更人 变更内容 STL示例 1.#includealgorithm //STL通用算法 2.#includefunctional //定义运算函数(代替运算符) 目前在该头文件中可能要用到的方法包括:针对数据块的排序、查找、对集合中的每个元素进行操作(如数组)for_each、移除remove(remove_if)等。具体实例如下: 【sort用法】: int nvalue[100]; //假设里面放的是-54至55的无序数据 //按照默认的方式进行排序(从小到大) sort(nvalue, nvalue + 100); //按照从大到小的方式进行排序 sort(nvalue, nvalue + 100, greaterint()); //按照自定义的方式进行排序,假设按照绝对值的大小从小到大排序 bool FabsSort(int nElem1, int nElem2) { return fabs(nElem1) fabs(nElem2) ? false : true; //从大到小 //return fabs(nElem1) fabs(nElem2) ? true : false; } sort(nvalue, nvalue + 100, FabsSort()); 【find用法】 int nvalue[100]; int *p = NULL; //查找数组中元素值为7的pos p = find(nvalue, nvalue + 100, 7); int n = p – nvalue; //n即为7在数组中的位置 【for_each用法】 如对L0仪器状态监测对获取到的数据集进行物理量转换操作 //定义一个类对象,进行物理量转换操作,当然也可以定义一个仿函数实现类似的功能 class CLogic2Phy { public: CLogic2Phy(); void operator()(int nValue) { //假设转换公式为phy = logic * 2 – 1; nValue = nValue * 2 – 1; } } int nDataSet[100]; //假设数据集中有100个数据, //定义一个数组保存数据集中的数据 伪码:对nDataSet数组赋值; for_each(nDataSet, nDataSet + 100, CLogic2Phy()); 经过for_each之后,nDataSet中保存的值全部改变了 【remove_if用法】 假设要对提取出来的数据集进行求平均值的操作,要先将数据集中的填充值剔除掉,然后计算剩下来的有效值的平均值: //定义一个类对象 templatetypename T1 class CCheckValue { public: CCheckValue(const T1 Value) { m_Value = Value; } bool operator()(const T1 Value) const { return m_Value == Value; } private: T1 m_Value; }; int nDataSet[100]; //假设数据集中有100个数据, //定义一个数组保存数据集中的数据 伪码:对nDataSet数组赋值; //假设填充值为50 int *p = NULL; p = remove_if(nDataSet, nDataSet + 100, CCheckValueint(50)); //经过remove_if之后,所有值为50的元素已经移除到指针p之后了 CMathAlgoint * oMathAlgo; double dbAverageNum = 0.0; dbAverageNum = oMathAlgo. Average(nDataSet, p); 【关于list、map、vector的实际用法】 对list容器使用remove_if和sort算法时严禁使用通用算法中的remove_if和sort,而应该使用list的成员方法remove_if和sort。 对vector和map容器使用erase
显示全部
相似文档