// return a delimited list of the unique elements const QuickString &KeyListOpsMethods::getDistinct() { if (empty()) return _nullVal; // separated list of unique values. If something repeats, only report once. makeFreqMap(); _retStr.clear(); for (; _freqIter != _freqMap.end(); _freqIter++) { if (_freqIter != _freqMap.begin()) _retStr += _delimStr; _retStr.append(_freqIter->first); } return _retStr; }
const string &KeyListOpsMethods::getDistinctOnly() { if (empty()) return _nullVal; // separated list of unique values. If something repeats, don't report. makeFreqMap(); _retStr.clear(); for (; _freqIter != _freqMap.end(); _freqIter++) { if (_freqIter->second > 1) continue; if (_freqIter != _freqMap.begin()) _retStr += _delimStr; _retStr.append(_freqIter->first); } return _retStr; }
const QuickString &KeyListOpsMethods::getDistinctOnly() { if (empty()) return _nullVal; //separated list of only unique values. If item repeats, discard. makeFreqMap(); _retStr.clear(); for (; _freqIter != _freqMap.end(); _freqIter++) { if (_freqIter->second != 1) continue; if (_freqIter != _freqMap.begin()) _retStr += _delimStr; _retStr.append(_freqIter->first); } return _retStr; }
// return the least common value in the vector const QuickString &KeyListOpsMethods::getAntiMode() { if (empty()) return _nullVal; makeFreqMap(); //now pass through the freq map and keep track of which key has the highest occurance. freqMapType::iterator minIter = _freqMap.begin(); int minVal = INT_MAX; for (; _freqIter != _freqMap.end(); _freqIter++) { if (_freqIter->second < minVal) { minIter = _freqIter; minVal = _freqIter->second; } } _retStr = minIter->first; return _retStr; }
// return a histogram of values and their freqs. in desc. order of frequency const QuickString &KeyListOpsMethods::getFreqDesc() { if (empty()) return _nullVal; //for each uniq val, report # occurances, in desc order. makeFreqMap(); //put freq map into multimap where key is the freq and val is the item. In other words, basically a reverse freq map. histDescType hist; for (; _freqIter != _freqMap.end(); _freqIter++) { hist.insert(pair<int, QuickString>(_freqIter->second, _freqIter->first)); } //now iterate through the reverse map we just made and output it's pairs in val:key format. _retStr.clear(); for (histDescType::iterator histIter = hist.begin(); histIter != hist.end(); histIter++) { if (histIter != hist.begin()) _retStr += _delimStr; _retStr.append(histIter->second); _retStr += ":"; _retStr.append(histIter->first); } return _retStr; }
// return a the count of _unique_ elements in the vector uint32_t KeyListOpsMethods::getCountDistinct() { if (empty()) return 0; makeFreqMap(); return _freqMap.size(); }