尝试使用FIND_IF函数将值定位在第一个元素对的矢量中
Trying to use find_if function to locate value in vector of pairs by first element
具有扫描大字符串(HTML(的代码,然后将其从中解析出任何单词。将所有实例推向矢量或对(单词和计数(,以防万一,否则增量计数(对第二个元素(。
vector < pair <string,int> > vect;
vector < pair <string,int> >::iterator it;
...
it = find_if (vect.begin(), vect.end(), currentword);
if (it != vect.end())
it->second++;
else
vect.push_back( make_pair(currentword, 1));
...
获取编译错误:
在C中包含在C:/tdm-GCC-32/lib/gcc/mingw32/5.1.0/include/c /bits/stl_algobase.h:71:0, 来自c:/tdm-gcc-32/lib/gcc/mingw32/5.1.0/include/c /bits/char_traits.h:39, 来自c:/tdm-gcc-32/lib/gcc/gc/mingw32/5.1.0/include/c /ios:40, 来自c:/tdm-gcc-32/lib/gcc/mingw32/5.1.0/include/c /ostream:38, 来自c:/tdm-gcc-32/lib/gcc/mingw32/5.1.0/include/c /iostream:39, 来自WebCounter.cpp:19:使用_iterator = __gnu_cxx :: __ normal_iterator,int>*,std :: vector,int>>>>>;_predicate = std :: __ cxx11 :: basic_string]':c:/tdm-gcc-32/lib/gcc/mingw32/5.1.0/include/c /bits/stl_algo.h:120:14:需要'_randomAcCessiterator std :: __ __ find_if(_randomomAcccesterator,_randomomamaccesterator,_randomomaccesterator,_randomomaccccesccessitarator,_randomomacccessceSterator,__randomAccessitator,__pricatiatiate,_pricatiate,_pricatiate,_pricatiate,_pricatiacatiate,_pricatiacatiate,std,:rando_access_iterator_tag([with _randomAccessiterator = __gnu_cxx :: __ normal_iterator,int>*,std :: vector :: vector,int>>>>>>>>;_predicate = __gnu_cxx :: __ ops :: _ iter_pred>]'c:/tdm-gcc-32/lib/gcc/gc/mingw32/5.1.0/include/c /bits/stl_algo.h:161:23:需要'_iterator std :: __ find_if(_iterator,_iterator,__erterator,__terator,__predicator,_predicate(_iterator = __gnu_cxx :: __ normal_iterator,int>*,std :: vector,int>>>>>;_predicate = __gnu_cxx :: __ ops :: _ iter_pred>]'c:/tdm-gcc-32/lib/gcc/gc/mingw32/5.1.0/include/c /bits/stl_algo.h:3815:28:需要'_iiter std :: find_if(_iiter,_iiter,_iiter,_iiter,_predicate([with with witw with witw with with _ predicate([_iiter = __gnu_cxx :: __ normal_iterator,int>*,std :: vector,int>>>>>;_predicate = std :: __ cxx11 :: basic_string]'webcounter.cpp:68:58:从这里需要c:/tdm-gcc-32/lib/gcc/mingw32/5.1.0/include/c /bits/predefined_ops.h:234:30:错误:无匹配到'(std ::配对,int>&(' {return bool(_m_pred(*__ it((;}
问题是pair <string,int>
与似乎是string
之间没有内置比较。您将不得不提供一个。例如
it = find_if (vect.begin(),
vect.end(),
[currentword](const pair <string,int>& p){ // this is a lambda expression
return p.first == currentword; // compare strings
});
lambda表达式的文档
也就是说,
std::map<string, int> freqmap;
如果允许,可能是此任务的更好选择。几乎所有代码都简化为
freqmap[currentword]++;
std::map
相关文章:
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 为什么在 std::map 上移动无法将元素从一个映射移动到另一个映射
- 如何仅读取文本文件中的第一个值
- 在C++中,如何在第一个"system()"结束后执行第二个"system()"?
- 查找不在标准中的第一个值::设置<int>最小-最大值
- C++:忽略第一个 cin.ignore 之后的输入
- 在C++中打印多个矢量的第一个值
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- C++第一个cout将不会打印
- 我们可以在第一个else-if条件结束后使用另一个else-if条件吗
- OpenGL:第二个VBO破坏了第一个VBO
- 为什么第一个Dynamic_cast没有投射到基类?
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- C++ 为什么程序只读取第一个值
- 在我的第一个C++程序中需要一些帮助(简单)
- 将顶部堆栈元素传输到第二个堆栈的第一个
- 获取不等于特定值的向量的第一个N元素
- 如何将std ::映射的第一个N元素复制到另一个地图
- 如何在C中获取char阵列的第一个X元素?提升效果是否有改进的方法