异常:状态\u访问\u冲突-指针引用 我刚刚开始了一些C++(也就是java 10年之后!)下面是Stroupstrup书中的例子

异常:状态\u访问\u冲突-指针引用 我刚刚开始了一些C++(也就是java 10年之后!)下面是Stroupstrup书中的例子,c++,pointers,exception,C++,Pointers,Exception,我从他的书中收集了以下代码段 #include <iostream> #include <map> #include <string> #include <iterator> using namespace std; map<string, int>histogram; void record (const string &s) { histogram[s]++; //record frequency of "s"

我从他的书中收集了以下代码段

#include <iostream>
#include <map>
#include <string>
#include <iterator>
using namespace std;

map<string, int>histogram;
void record (const string &s)
{
    histogram[s]++; //record frequency of "s"
    cout<<"recorded:"<<s<<" occurence = "<<histogram[s]<<"\n";
}

void print (const pair<const string, int>& r)
{
    cout<<r.first<<' '<<r.second<<'\n';
}

bool gt_42(const pair<const string, int>& r)
{
    return r.second>42;
}

void f(map<string, int>& m)
{
    typedef map<string, int>::const_iterator MI;
    MI i = find_if(m.begin(), m.end(), gt_42);
    cout<<i->first<<' '<<i->second;
}

int main () {
    istream_iterator<string> ii(cin);
    istream_iterator<string> eos;
    cout<<"input end\n";

    for_each(ii, eos, record);

    //typedef pair <string, int> String_Int_Pair;
    //histogram.insert(String_Int_Pair("42", 1));
    //histogram.insert(String_Int_Pair("44", 1));


    //for_each(histogram.begin(), histogram.end(), print);
    f(histogram);

}
#包括
#包括
#包括
#包括
使用名称空间std;
地图直方图;
无效记录(常量字符串和s)
{
直方图[s]++;//记录“s”的频率
cout在您的
void f(map&m)
函数中,您不会检查是否确实找到了要查找的元素,例如:

void f(map<string, int>& m)
{
    typedef map<string, int>::const_iterator MI;
    MI i = find_if(m.begin(), m.end(), gt_42);
    if(i != m.end())
       cout<<i->first<<' '<<i->second;
    else
       cout << "Not Found" << endl;
}
void f(地图和地图)
{
typedef映射::常量迭代器MI;
MI i=查找if(m.begin(),m.end(),gt_42);
如果(i!=m.end())
cout在您的
void f(map&m)
函数中,您不会检查是否确实找到了要查找的元素,例如:

void f(map<string, int>& m)
{
    typedef map<string, int>::const_iterator MI;
    MI i = find_if(m.begin(), m.end(), gt_42);
    if(i != m.end())
       cout<<i->first<<' '<<i->second;
    else
       cout << "Not Found" << endl;
}
void f(地图和地图)
{
typedef映射::常量迭代器MI;
MI i=查找if(m.begin(),m.end(),gt_42);
如果(i!=m.end())

coutSorry我没有足够注意返回r.second>42表示计数>41而不是输入no.>42。我只是粗心地阅读了算法。对此表示抱歉。感谢您的回复,sirgeorge。对不起,我没有足够注意返回r.second>42表示计数>41而不是输入no.>42。我只是粗心地阅读了算法丽思:很抱歉,乔治先生,谢谢你的回复。