// // C++ Implementation: string_intset // // Description: // // // Author: Børre Gaup , (C) 2008 // // Copyright: See COPYING file that comes with this distribution // // #include "string_intset.h" #include string_intset::string_intset() { clear(); } void string_intset::clear() { str_intset = map >(); } void string_intset::add_index_map(string str, int aff_index) { map >::iterator iter = str_intset.find(str); if(iter == str_intset.end()) { str_intset[str].insert(aff_index); } else { (*iter).second.insert(aff_index); } } void string_intset::dicder(map< set, set > * der_compound) { for(map >::iterator ii=str_intset.begin(); ii != str_intset.end(); ++ii) { set string_set = (*der_compound)[(*ii).second]; string_set.insert((*ii).first); (*der_compound)[(*ii).second] = string_set; } } map > string_intset::get_map() { return str_intset; } void string_intset::print_dic(fstream * out_file) { for(map >::iterator ii=str_intset.begin(); ii != str_intset.end(); ++ii) { (*out_file) << (*ii).first << "/"; set::iterator jj = (*ii).second.begin(); (*out_file) << (*jj); ++jj; for(; jj != (*ii).second.end(); ++jj) { (*out_file) << "," << (*jj); } (*out_file) << endl; } } void string_intset::print_der(string file_name) { fstream out_file(file_name.c_str(), ios::out | ios::app); for(map >::iterator ii=str_intset.begin(); ii != str_intset.end(); ++ii) { out_file << (*ii).first << "/"; set::iterator jj = (*ii).second.begin(); out_file << (*jj) + 1; ++jj; for(; jj != (*ii).second.end(); ++jj) { out_file << "," << (*jj) + 1; } out_file << ",63005" << endl; } out_file.close(); } set< set > string_intset::get_intset() { set< set > intset; for(map >::iterator ii=str_intset.begin(); ii != str_intset.end(); ++ii) { intset.insert((*ii).second); } return intset; } string_intset::~string_intset() { }