迭代向量以更新word_counter
Iterate over a vector to update a word_counter
我有一个结果结构向量,每个向量都包含一个作为"单词"的合约字符串
struct Result
{
string contract;
int score;
};
我想找到向量中不同单词的出现频率。
我可以使用分隔符将它们全部连接成一段文本,并从中提取频率
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);
}
使用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;
但是迭代原始向量似乎更干净
for (std::vector<Result>::iterator it = begin(v); it != end(v); ++it)
{
//Magically update word counter
}
任何适当的魔法都非常感谢。
您可以创建一个地图,以单词为键,频率(计数)作为值。
std::map<std::string, int> frequency;
for (auto& result : v) {
frequency[result.contract]++;
}
相关文章:
- 对于单个数据 WORD 的 memcpy 和赋值语句有什么区别?
- 使用 SVM 进行分类,使用来自 Bag of Word 的词汇构建
- 将 64 位指针打包到 4 个 WORD 中
- 在Word中重复段落
- EM_SETSEL在.docx(word文档)中不起作用
- 错误:在 C++ 中从 'Counter' 转换为非标量类型'CountDn'
- 比较 WORD 特征
- 链接器错误:"cannot move location counter backwards (from 200009f8 to 20000800)"
- 有没有办法在C++中制作无锁"counter"随机访问迭代器?
- 如何在C++中删除Word文档的写保护
- 如何使用 word 对象模型中的C++接口在 word 中添加自定义 XML 艺术
- C++可以从文本文件复制并粘贴到打开的Word程序中
- 看起来如此主要的错误.cpp:(.text.startup+0xd6):未定义对"vtable for Counter"的引用?
- Borland C++ - 使用OLE使用Word打开RTF文件
- Word.exe 已停止使用递归工作
- Qt C++macOS问题。我正在使用函数 .find( "a word") 在多集中搜索单词,它适用于 Windows 但不适用于 mac
- 初学者 - 我的"produce word backwards"程序有什么问题?
- sscanf_s:格式字符串"%d"需要类型为"int *"的参数,但可变参数 4 的类型为"WORD *"
- 从 C 标头生成 MS Word 表
- 如何在C++中将字符串替换为"Match case"和"Match whole word"