Я пишу код cpp для ввода строковых записей, содержит имя и номер мобильного телефона (значения, разделенные пробелами), сохраняемые в карте.
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
void buildContactList(int n, map<string,string> &myMap);
void string_split(string,string*);
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int n;
string line=" 1";
vector<string> names;
map<string,string> contactList;
map<string,string> :: iterator it;
cin>>n;
// build contact list for *n* entries
buildContactList(n,contactList);
// enter searching keywords, use space as a delimeter
getline(cin>>ws,line);
while(line != " "){
it = contactList.find(line);
//if(it->second != " "){
if(it == contactList.end()){
names.push_back("Not found");
}
else{
line = line + "=" + it->second;
names.push_back(line);
}
//}
line="";
getline(cin,line);
}
if(names.size()>0){
for (auto i = names.begin(); i != names.end(); ++i)
cout << *i << endl;
}
return 0;
}
void buildContactList(int n, map<string,string> &myMap){
string temp;
//string::size_type sz;
string arr[2]={""};
for(size_t i=0;i<n;i++){
cin.clear();
getline(cin>>ws,temp);
string_split(temp,arr);
//myMap[arr[0]] = stod(arr[1] , &sz);
myMap[arr[0]] = arr[1];
cin.clear();
}
return;
}
void string_split(string temp , string *arr){
int a = temp.find(' ');
arr[0] = temp.substr(0,a);
arr[1] = temp.substr(a+1,10);
//cout<< "arr[0]:"<<arr[0]<<"-------arr[1]:"<<arr[1]<<"------";
return;
}
- и затем поиск совпадения номера контакта
- , если найден, сохраните его в векторе "names"
- и, если запись не существует, push_back"not found"
- и, наконец, распечатать его (вектор)
моя проблема в том, что код работает нормально с автономным компилятором g ++, но выдает ошибку bad_alloc при компиляциис компилятором хакерранка