本文整理汇总了C++中lem::MCollect::push_back方法的典型用法代码示例。如果您正苦于以下问题:C++ MCollect::push_back方法的具体用法?C++ MCollect::push_back怎么用?C++ MCollect::push_back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类lem::MCollect
的用法示例。
在下文中一共展示了MCollect::push_back方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProducePhonInv
// Генерация слов, фонетически близких к заданному word.
// Возвращается список вариантов, включая исходное слово, и список их достоверностей.
void LexicalAutomat::ProducePhonInv(
const lem::UCString &word,
int id_language,
lem::MCollect<lem::UCString> &res,
lem::MCollect<lem::Real1> &rels,
LA_RecognitionTrace *trace
)
{
MCollect<LA_AA_list*> packs;
LA_AA_list *list = new LA_AA_list;
list->reserve(16);
list->push_back(LA_AA_item(word, Real1(100)));
// Теперь мутированные варианты.
LA_Pack *pack = AlephAuto(id_language, word, 1, trace);
for (Container::size_type j = 0; j < pack->size(); j++)
{
const Solarix::Lexem &ph_lex = *(pack->get(j));
if (res.find(ph_lex) == UNKNOWN)
{
Real1 r = pack->get(j)->get_Val();
rels.push_back(r);
res.push_back(ph_lex);
}
}
return;
}
示例2: Lemmatize
void LemmatizatorStorage_SQLITE::Lemmatize(
const lem::UCString &word,
lem::MCollect<lem::UCString> &lemmas
)
{
lemmas.clear();
lem::MemFormatter mem;
mem.printf( "SELECT L.lemma"
" FROM lexemes_n X, lemmas L"
" WHERE X.lexeme='%us' AND L.id=X.id_lemma", to_upper(word).c_str() );
lem::Ptr<LS_ResultSet> rs(cnx->Select(lem::to_utf8(mem.string())));
while( rs->Fetch() )
{
lemmas.push_back( rs->GetUCString(0) );
}
if( lemmas.empty() )
{
lemmas.push_back(word);
}
return;
}
示例3: Crop
bool LA_PreprocessorRules::Crop(
const lem::UCString &word,
lem::MCollect<lem::UCString> &results,
lem::MCollect<lem::Real1> &rels,
LA_RecognitionTrace *trace
) const
{
bool applied = false;
if (!crop_rules.empty())
{
// сначала применяем префиксные правила
typedef CROP_RULES::const_iterator IT;
LA_CropRule::HashType prefix_hash = LA_CropRule::CalcHash(word.c_str(), true, false);
std::pair<IT, IT> pp = prefix_crop_rules.equal_range(prefix_hash);
lem::UCString result;
for (auto it = pp.first; it != pp.second; ++it)
{
const LA_CropRule *r = it->second;
if (r->Apply(word, result))
{
applied = true;
results.push_back(result);
rels.push_back(r->GetRel());
if (trace != nullptr)
{
trace->CropRuleApplied(word, result, r);
}
}
}
// теперь отсекаем аффикс
LA_CropRule::HashType affix_hash = LA_CropRule::CalcHash(word.c_str(), false, true);
pp = affix_crop_rules.equal_range(affix_hash);
for (auto it = pp.first; it != pp.second; ++it)
{
const LA_CropRule *r = it->second;
if (r->Apply(word, result))
{
applied = true;
results.push_back(result);
rels.push_back(r->GetRel());
if (trace != nullptr)
{
trace->CropRuleApplied(word, result, r);
}
}
}
}
return applied;
}
示例4: LoadNGram
void LEMM_Compiler::LoadNGram( lem::Iridium::Macro_Parser & txtfile, Dictionary & dict, lem::MCollect<int> & terms, int order ) const
{
lem::Iridium::BSourceState beg = txtfile.tellp();
while( !txtfile.eof() )
{
lem::Iridium::BethToken t = txtfile.read();
if( lem::is_int(t.string()) )
terms.push_back( lem::to_int(t.string()) );
else
{
txtfile.seekp(t);
break;
}
}
if( terms.size() != order+1 )
{
dict.GetIO().merr().printf( "%vfDInvalid ngram%vn\n" );
lem::Iridium::Print_Error( beg, txtfile );
throw lem::E_ParserError();
}
return;
}
示例5: Lemmatize
void Lemmatizator::Lemmatize( const lem::MCollect<lem::UCString> & words, lem::MCollect<lem::UCString> &lemmas )
{
#if defined LEM_THREADS
lem::Process::CritSecLocker lock(&cs);
#endif
if( !model_loaded )
{
bin->seekp( model_pos );
model_loaded = true;
model_available = bin->read_bool();
if( model_available )
{
LoadModel();
}
}
if( model_available )
{
LemmatizeViaModel( words, lemmas );
}
else
{
for( lem::Container::size_type i=0; i<words.size(); ++i )
{
lem::UCString lemma;
Lemmatize( words[i], lemma );
lemmas.push_back( lemma );
}
}
return;
}
示例6: GetPrev
void LexerTextPos::Collect_Right2Left(int count, lem::MCollect<const LexerTextPos*> & inverted_path) const
{
inverted_path.push_back(this);
if (count > 0 && !IsBegin() && previous != nullptr)
GetPrev()->Collect_Right2Left(count - 1, inverted_path);
return;
}
示例7: GetExportCoordPairs
void SynPatternResult::GetExportCoordPairs(lem::MCollect< std::pair<int, int> > & pairs) const
{
for (auto it = exported_coords.begin(); it != exported_coords.end(); ++it)
{
pairs.push_back(*it);
}
return;
}
示例8: CollectPathToLeft
void LexerTextPos::CollectPathToLeft(int count, lem::MCollect<const Word_Form*> & org) const
{
LEM_CHECKIT_Z(count >= 0);
org.push_back(wordform);
if (count > 0 && previous != NULL)
previous->CollectPathToLeft(count - 1, org);
return;
}
示例9:
void LexerTextPos::Collect_Right2Left(const LexerTextPos *left_boundary, lem::MCollect<const LexerTextPos*> & inverted_path) const
{
LEM_CHECKIT_Z(left_boundary != nullptr);
inverted_path.push_back(this);
if (this != left_boundary && previous != nullptr)
previous->Collect_Right2Left(left_boundary, inverted_path);
return;
}
示例10: GetUnresolvedForwardDeclarations
void SynPatterns::GetUnresolvedForwardDeclarations( lem::MCollect<lem::UCString> & unresolved_names ) const
{
typedef std::map< lem::UCString, int >::const_iterator IT;
for( IT it=name2id.begin(); it!=name2id.end(); ++it )
{
if( id2count.find( it->second )==id2count.end() )
unresolved_names.push_back( it->first );
}
return;
}
示例11: GetResultSyllabs
void SyllabContext::GetResultSyllabs(lem::MCollect<lem::UCString> & result_syllabs, bool Normalized) const
{
for (auto point : points)
{
if (point->IsLeftBoundary() || point->IsRightBoundary())
continue;
result_syllabs.push_back(point->BuildSyllab(Normalized));
}
return;
}
示例12: GetResultSyllabs
void SyllabContext::GetResultSyllabs( lem::MCollect<lem::UCString> & result_syllabs, bool Normalized ) const
{
for( lem::Container::size_type i=0; i<points.size(); ++i )
{
const SyllabContextPoint * p = points[i];
if( p->IsLeftBoundary() || p->IsRightBoundary() )
continue;
result_syllabs.push_back( p->BuildSyllab(Normalized) );
}
return;
}
示例13: Find
// *************************************************************************************
// Ищем парадигмы, чьи условия подходят для указанной базовой формы, возвращает
// список id таких парадигм.
// *************************************************************************************
void ParadigmaFinder::Find( int PartOfSpeech, const lem::UCString &entry_name, lem::MCollect<int> &found_ids )
{
#if defined LEM_THREADS
lem::Process::RWU_ReaderGuard rlock(cs);
#endif
if( !loaded )
{
#if defined LEM_THREADS
lem::Process::RWU_WriterGuard wlock(rlock);
#endif
LoadFromDB();
}
if( PartOfSpeech==UNKNOWN || PartOfSpeech==ANY_STATE )
{
for( lem::Container::size_type i=0; i<matchers.size(); ++i )
if( matchers[i]->Match(entry_name) )
{
found_ids.push_back(ids[i]);
}
}
else
{
CLASS2DECL::const_iterator it=class2decl.find(PartOfSpeech);
if( it!=class2decl.end() )
{
for( lem::Container::size_type i=0; i<it->second->size(); ++i )
if( it->second->get(i).second->Match(entry_name) )
{
found_ids.push_back( it->second->get(i).first );
}
}
}
return;
}
示例14: SelectInts
void NGramsStorage_SQLITE::SelectInts( const lem::FString &Select, lem::MCollect<int> &list )
{
LEM_CHECKIT_Z( !Select.empty() );
sqlite3_stmt *stmt=NULL;
int res = sqlite3_prepare_v2( hdb, Select.c_str(), -1, &stmt, NULL );
if( res==SQLITE_OK )
{
while( sqlite3_step( stmt ) == SQLITE_ROW )
{
int i = sqlite3_column_int(stmt,0);
list.push_back(i);
}
sqlite3_finalize(stmt);
}
return;
}
示例15: GenerateForms
void SG_DeclensionTable::GenerateForms(
const Lexem &entry_name,
lem::MCollect<Lexem> & res,
lem::PtrCollect<CP_Array> & form_dims,
const SynGram &sg,
const SG_DeclensionAutomat &dsa
) const
{
res.reserve(form.size());
for( lem::Container::size_type i=0; i<form.size(); i++ )
{
UCString frm( dsa.ProduceForm( entry_name, GetClass(), *form[i], sg ) );
res.push_back( frm);
form_dims.push_back( new CP_Array( form[i]->GetDim() ) );
}
return;
}