C++统计数据问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:20:57
上表的所有数据我从数据库读取并存在一个二维数组s(CString s[100][8])中,下表数据我定义另一个二维数组s2(CString s2[6][10])中,请问如何统计相应类别的总金额并存到s2中,这是帮朋友做的一个程序,希望大家帮帮忙。

从数据库里读取数据并存在一个额定大小的二维数组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;
}