【发布时间】:2016-02-26 11:51:10
【问题描述】:
我遇到了这个错误,它没有任何意义。
30:5: error: expected expression
[&](string & s){ M[s]++; } );
^
这是我的代码:
#include <iostream>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
using namespace std;
int main()
{
ifstream in_file( "sample_doc.txt" );
ofstream out_file( "output.txt" );
istream_iterator< string > is( in_file );
istream_iterator< string > eof;
map< string, int > M;
copy( is, eof, inserter(M, begin(M)));
for_each(istream_iterator<string>(is),
istream_iterator<string>(),
[&](string & s){ M[s]++; } );
sort( M.begin(), M.end() );
ostream_iterator<string> os( out_file, " " );
copy( M.begin(), M.end(), os );
return 0;
}
这是一个字数统计程序。我编写这些代码尝试存储“sample_doc.txt”中的单词并计算“map”中每个单词的出现频率。 键是单词,值是单词在“sample_doc.txt”中出现的次数的计数。 此外,我尽量不使用任何低级 C++ 循环。 最重要的是,当我在 Eclipse 中运行这个程序时,我得到了大约 13 个非常奇怪的错误,这不像是 bug 什么的。它一直在说:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/..
/include/c++/v1/algorithm:1751:19:
error: no viable overloaded '='
*__result = *__first;
~~~~~~~~~ ^ ~~~~~~~~
或者:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/..
/include/c++/v1/algorithm:3855:40: error: invalid operands to binary expression
('std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char>, int>,
std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, int>, void *> *, long> >' and
'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char>, int>,
std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, int>, void *> *, long> >')
difference_type __len = __last - __first;
~~~~~~ ^ ~~~~~~~
或者:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/..
/include/c++/v1/algorithm:3946:33: error: invalid operands to binary expression
('std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char>, int>,
std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, int>, void *> *, long> >' and
'std::__1::__map_iterator<std::__1::__tree_iterator<std::__1::__value_type<std::__1::basic_string<char>, int>,
std::__1::__tree_node<std::__1::__value_type<std::__1::basic_string<char>, int>, void *> *, long> >')
if (__i >= __j)
~~~ ^ ~~~
类似这样的东西,其中有 13 个。我很困惑,我必须在这里问它。 即使是提示对我来说也很有价值。 提前谢谢大家。
【问题讨论】:
标签: c++ sorting stl fstream word-count