C++代码编写实例.doc
文本预览下载声明
风云三号卫星地面应用系统产品质量检验系统(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
显示全部