template <typename T>
void RemoveDocument ( T police, int document_id )
{
std::vector<const std::string*> words_to_remove ( document_to_word_freqs_.size ( ));
// Получаем список слов, присутствующих в удаляемом документе
std::transform ( police
, document_to_word_freqs_[document_id].begin ( )
, document_to_word_freqs_[document_id].end ( )
, words_to_remove.end ( )
, []( const auto& word_freq )
{
return &word_freq.first;
}
); // std::transform
// Удаляем упоминания этих слов из word_to_document_freqs_
std::for_each ( police
, words_to_remove.begin( )
, words_to_remove.end ( )
, [&] ( const auto& wordPtr )
{
word_to_document_freqs_[*wordPtr].erase ( document_id );
}
);
// Удаляем информацию о документе из остальных контейнеров
n_doc_id_.erase ( document_id );
documents_.erase ( document_id );
document_to_word_freqs_.erase ( document_id );
}