2017-11-07 11 views
0

word_counter를 업데이트 벡터에서 단어.으로 반복은 "단어"</p> <pre><code>struct Result { string contract; int score; }; </code></pre> <p>나는 별개의 발생 빈도를 찾으려는 계약 문자열을 포함하는 각각의 I는 결과 구조의 벡터를

나는 구분 기호를 사용하여 텍스트의 한 조각에 모두 연결할하고 multi_index_container

typedef multi_index_container 
< 
    word_counter_entry, 
    indexed_by 
    < 
    ordered_non_unique 
    < 
    BOOST_MULTI_INDEX_MEMBER(
     word_counter_entry, unsigned int, occurrences), 
    std::greater<unsigned int> 
    >, 
    hashed_unique 
    < 
    BOOST_MULTI_INDEX_MEMBER(word_counter_entry, std::string, word) 
    > 
    > 

> word_counter; 

을 사용하여 해당

text_tokenizer tok(text, separator); 

for (text_tokenizer::iterator it = tok.begin(), it_end = tok.end(); 
    it != it_end; ++it) 
{ 
    ++total_occurrences; 
    word_counter::iterator wit = wc.insert(*it).first; 
    wc.modify_key(wit, ++bl::_1); 
} 

에서 주파수를 추출 그러나 원시 반복하는 청소기 보인다 수 있습니다 벡터

for (std::vector<Result>::iterator it = begin(v); it != end(v); ++it) 
    { 
     //Magically update word counter 
    } 

어떤 적절한 마술 조각 에드.

답변

1

단어를 키로하고 빈도 (개수)를 값으로 사용하여지도를 만들면됩니다.

std::map<std::string, int> frequency; 
for (auto& result : v) { 
    frequency[result.contract]++; 
} 
+0

참으로 그렇습니다. 부스트 기능을 사용하고 사용자 지정 코드를 사용하지 않으려 고했지만 너무 단순합니다. – DLyons