Corpus corpusSample(Corpus const& corpus, std::vector<std::string> const& docIds) throw(std::runtime_error) { Corpus _sample; for (auto i=docIds.begin() ; i!=docIds.end() ; ++i) { auto j = corpus.find(*i); if (j == corpus.end()) { throw std::runtime_error(ERR_DOCUMENT_NOT_FOUND); } else { _sample[*i] = j->second; } } return _sample; }
Corpus readCorpusFromStream(std::istream& is) { Corpus corpus; std::string docName; Document doc; doc = readDocFromStream(is, docName); while (!is.eof() && !is.fail()) { corpus[docName] = doc; doc = readDocFromStream(is, docName); } if (corpus.find(docName) == corpus.end()) { corpus[docName] = doc; } return corpus; }