File: splitMap.cpp

package info (click to toggle)
fastml 3.11-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,772 kB
  • sloc: cpp: 48,522; perl: 3,588; ansic: 819; makefile: 386; python: 83; sh: 55
file content (50 lines) | stat: -rw-r--r-- 1,250 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// $Id: splitMap.cpp 962 2006-11-07 15:13:34Z privmane $

#include "splitMap.h"
#include <algorithm>
using namespace std;

int splitMap::add(const split & in) { // add a split and return it's new count.
	return(_map[in]=_map[in]+1);
}

class valCmp {
public:
	bool operator()(const pair<split,int> & elem1, const pair<split,int> & elem2) {
		return (elem1.second > elem2.second);
	}
};

vector<pair<split,int> > splitMap::sortSplits() const{
	vector<pair<split,int> > svec(_map.size());
	partial_sort_copy(_map.begin(),_map.end(),svec.begin(),svec.end(),valCmp());
	return svec;
}

int splitMap::counts(const split& in) const {
	mapSplitInt::const_iterator i(_map.find(in));   
	if (i==_map.end()) return 0;
	return i->second;
}

void splitMap::print(ostream& sout) const {// default cout.
	for (mapSplitInt::const_iterator i = _map.begin(); i != _map.end();++i) {
      sout << i->second<<"\t"<<i->first;
    }
	sout <<endl;
}


ostream& operator<< (ostream &sout,  const splitMap& split_map) {
	split_map.print(sout);
	return sout;
}

/*splitMap::reverse_mapSplitInt splitMap::reverse() const
{
  reverse_sMap_t rmap;
	for (sMap_t::const_iterator i=_map.begin(); i!=_map.end();++i)
		rmap.insert(rMapPair_t(i->second,i->first));
	return rmap;
}
*/