Loading...
NKolev avatar NKolev 6 Точки

Task 4 Parse Unique Companies от MEMORY MANAGEMENT

Здравейте, може ли малко разяснение по въпросната задача. До колкото разбрах трябва да направим функция parseUniqueCompanies която приема string,int и указател към функция и да връща указател към масив от Companies. Масива от компании го пълним като парснем стринга от входните параметри и проверим дали съответната компания отговаря на съответното условието за уникалност по name,id или name+id. Не ми стана ясно от къде идва критерия за уникалност. Примерно ако е по id кой казва кое id като число да е критерия за уникалност ? 

Тагове:
0
C++ Advanced 04/02/2019 14:36:06
j.petrov_90 avatar j.petrov_90 373 Точки
Best Answer

Привет, колега,

Правилно си разбрал условието на задачата с няколко допълнения:
- Втория параметър на функцията ни "int" ли трябва да е? Замисли се след изпълнението на тази функция имаме ли начин по return value-от "Company *" да знаем колко уникални компании сме parse-нали? Нямаме.
Затова този параметър трябва да ти е [in/out] или казано по-просто трябва да ти е int &, за да можем да го използваме като размер на динамично създадения масив.

- Относно другия ти въпрос: откъде идва уникалността - забележи, че функциите byNameAndId(), byName() и byId() имат една и съща сигнатура (затова и можем да ги подадем на един и същи callback.)
Тези функции имат различно поведение, но един и същи return type, а именно std::string.
Това, което ти върнат тези фунции, респективно callback-a ще бъде твоят "критерий за уникалност".
Защо ще бъде критерий за уникалност -> защото по едно и също време може да е активна само една от тези 3 функции (в замисимост както се посочи като критерия от main() функцията).

Да напишеш кода обаче оставям на теб.
Ако има нещо пак неясно - питай.

Поздрави 

0
ditchev avatar ditchev 36 Точки

Както казват юристите: Първия по ред е първи по право :))

0
ditchev avatar ditchev 36 Точки

Май доста лаконично съм го написал, та може да е неразбираемо.

Идеята е да парснеш съответната по ред компания, да провериш дали би била уникална (уникален == единствен) в контейнера, в който трупаш компаниите и който най-накрая ще върне функцията ти, по критерия, който е подаден от мейн-а (function pointer-а). Ако няма друга като нея - хоп, вътре; ако не - по условието на конкретната задача трябва да остане първата подадена компания (за да продължи да бъде единствена), т.е. discard-ваш втората и нататък със същото Id, name или Id+name.

0
nikkola01 avatar nikkola01 1 Точки

Когато се опитам да запазя Company във вектор за да мога да си обработя информацичта ми дава това error: no matching function for call to 'std::vector<Company>::push_back(Company (&)(int, std::__cxx11::string))'|  може ли съвет.

0
ditchev avatar ditchev 36 Точки

Без код е малко трудно да се каже. Може би не си #include-нал "Company.h".

Може и друго да е.

edit: Пропуснал съм да видя амперсанда: Най-вероятно си декларирал вектора като вектор от пойнтери към Company, щото това се иска да върне функцията, а пък се опитваш да push-неш цялата новоконструирана Company.

Hint: operator new или .push_back(&company);

0
05/02/2019 13:35:06
NKolev avatar NKolev 6 Точки

Благодаря, за отговорите. Условието ми се изясни след разясненията и успях да я реша с резултат 100/100 !

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