Loading...
Filipbg avatar Filipbg 26 Точки

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 директно го създава на место. Доста странна грешка. Някой има ли идея защо се получава това? Благодаря предварително! 

Тагове:
0
C++ Advanced
Jordan_Jordanov avatar Jordan_Jordanov 16 Точки

Друг вариант е да добавиш къдрави скоби. В твоя пример:

employees.push_back( { properties[i][0], properties[i][1] } );

0
zzerro avatar zzerro 16 Точки

Това с къдравите скоби е много удобно и работи безотказно като трябва да подадеш няколко аргумента независимо за какво(функции, обекти).

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.