局部变量/类变量增量

时间:2013-09-26 00:21:17

标签: c++ printing pass-by-value

基本上我的程序所做的就是在单词的数据流中读取,并计算每个单词的出现次数和唯一单词的总数。它会将它们读入地图。除了一个问题之外,我的程序工作得很好......当我调用p.print()时,total的值仍然是0.在for_each语句中,总数增加似乎存在一些问题,但是当我p.print,它表现得好像从未增加...我的打印功能定义如下:

void print_words(const map<string,int> &aMap) {
    PRN p(aMap.size());
    for_each(aMap.begin(), aMap.end(), p);
    p.print();
}

我有一个负责处理每个单词的类,这里是定义:

//CLASS PRN FUNCTIONS
// constructor
PRN::PRN(const int& s, const int& c, const int& t) {
    sz=s;
    cnt=c;
    total=t;
}

// overloaded operator, where P is defined as
// typedef pair < string, int > P;
void PRN::operator()(const P& p) {
    if(cnt%NO_ITEMS == 0 && cnt != 0)
        cout << '\n';
    cout << setw(ITEM_W) << left << p.first << " : " << setw(NO_W) << left << p.second;
    total += p.second;
    cnt++;
}

// to printout final value of total                                                             
void PRN::print() const {
    cout << '\n' << '\n';
    cout << "no of words in input stream  : " << total << endl;
    cout << "no of words in output stream : " << sz << endl;
}

1 个答案:

答案 0 :(得分:0)

想出来......我需要

p = for_each(aMap.begin(), aMap.end(), p);

没有更好的感觉,然后搞清楚你自己的问题!