03. Make Company
Чудих се доста време. Доста се рових в нета за този case, но не намерих solution. Дава error no matching function for call to за този ред:
employees.push_back(properties[i][0]), properties[i][1]);
Ето го кода:
#ifndef MAKECOMPANY_H
#define MAKECOMPANY_H
#include <memory>
#include "Company.h"
using namespace std;
shared_ptr<Company> makeCompany(vector<string>& properties)
{
auto id = stoi(properties[0]);
auto name = properties[1];
vector<pair<char, char>> employees;
for(int i = 2; i < properties.size(); ++i)
{
employees.push_back(properties[i][0]), properties[i][1]);
}
return make_shared<Company>(id, name, employees);
}
#endif // !MAKECOMPANY_H
Значи с emplace_back работи. Но с push_back не. Първоначално си мислих че е от компилатора ми. Но се оказва че и в Judge дава същия error. До колкото знам разлика в emplace_back и push_back почти няма. Само дето push_back е малко по бавен защото първо създава обекта, а после го вкарва във вектора, докато emplace_back директно го създава на место. Доста странна грешка. Някой има ли идея защо се получава това? Благодаря предварително!
Това с къдравите скоби е много удобно и работи безотказно като трябва да подадеш няколко аргумента независимо за какво(функции, обекти).