C++统计数据问题
来源:百度知道 编辑:UC知道 时间:2024/05/17 23:20:57
从数据库里读取数据并存在一个额定大小的二维数组s里,你就不怕越界?
如果我来做的话,我的考虑是使用map. 而且内存也是动态的
1. 如果你只是关心总金额,可是设计成
map<string strItem, double lfTotal, myFunc>
strItem代表类别名,lfTotal代表总金额, myFunc是你自己定义的函数对象(用来搜索键时候使用,就是你自己来定义什么样的键是相等的,如果不需要的函数对象的话,就认为字符串严格相等的时候键才相等)
或者map<int nItem, double lfTotal>
nItem也代表类别(自己定义的类别,比如1表示西药,2表示治疗....)
定义一个存放你数据的map
map<string strItem, double lfTotal, myFunc> m_myData;
然后遍历从数据库里得到每一个结果集
while(resultset non-empty) {
map<string strItem, double lfTotal, myFunc>::iterator iter;
string strItem = getMyItemName();//从这条结果集得到类别名
double lfItemMoney = getMyItemMoney();//这个结果集的金额
//如果map里没有这个类别的话,在map里新建这个类别
if ( (iter = m_myData.find(strItem)) == m_myData.end()) {
m_myData.insert(pair<string, double>(strItem, lfItemMoney));
continue;
}
//如果在map中存在这个类别的话
iter.second += lfItemMoney;
}