Untitled

mail@pastecode.io avatar
unknown
c_cpp
a year ago
1.4 kB
2
Indexable
    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 );
    }