Loading...
genadi1980 avatar genadi1980 1 Точки

DESTRUCTORS, COPY-ASSIGNMENT, CONSTRUCTION // 01.Register

Здравейте, колеги,

Тои код ми осигурява само 50/100, а останалото, честно казано не знам как да оптимизирам. 

Определено имам memory leak. Може ли малко идеи как да си оправя кода. 


#include "Company.h"
#include "Register.h"
#include <vector>


std::vector<Company> companies;
Register::Register(size_t numCompanies) 
                    : numAdded(numCompanies)
                    , companiesArray(new Company[numAdded]) {}

void Register::add(const Company & c) {
    
    for (size_t i = 0; i < numAdded; ++i) {
        companiesArray[i] = c;
    }
    companies.push_back(c);
}


Company Register::get(int companyId) const {
    Company c;
    std::vector<Company>::iterator it;
    for (it = companies.begin(); it != companies.end(); ++it) {
        if (companyId == it->getId()) {
            return *it;
        }
    }
    return c;
}


Register::~Register() {
    delete[] this->companiesArray;
}

Благодаря предварително.

Тагове:
0
C++ Advanced
ditchev avatar ditchev 36 Точки

огледай си малко логиката в конструктора и във функцията add.

Hint: numAdded != numCompanies

доколкото виждам, не лийкваш мемори.

 

EDIT: като гледам, май не успявам да помогна много и май причината е в "качеството" на подсказката :(

Трябваше да започна с това, че външен за класа ти контейнер /вектора при теб най-отгоре/ е трудно, всъщност е невъзможно. да ти свърши работа.

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