Я просто запускаю C++ (то есть через 10 лет JAVA!). Я следую примерам из книги Stroupstrup.Исключение: STATUS_ACCESS_VIOLATION - ссылка указателя
Я собрал следующие фрагменты кода из своей книги.
#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);
}
Я получаю сообщение об ошибке - Исключение: STATUS_ACCESS_VIOLATION, я думаю, что в привязке i-> первый, i-> второй, я думаю. Может кто-нибудь помочь мне узнать, что может быть проблема. Также, если вы можете предложить некоторые альтернативные форумы C++, которые также будут полезны.
Извините, я не обращал достаточного внимания на возврат r.second> 42, когда число> 41, а не inputno.> 42. Я просто небрежно прочитал алгоритм правильно. Извини за это. Спасибо за ваш ответ, sirgeorge. – Mahesh