Loading...
Vankata83 avatar Vankata83 72 Точки

Task 5 Memory

Здравейте

Каква трябва да е сигнатурата на метода readCompaniesFromMemory в COMPANYMEMORYUTILS хедъра ?

Нещо съвсем се оплетох на тази задача :)

Този ред от мейна явно ме бърка: byte* memory = new byte[inputBytes.size()];

Ясно, че е заделяне на динамична памет, но не знам как точно да приема memory в метода.

 

Тагове:
0
C++ Advanced
Filipbg avatar Filipbg 26 Точки

Заповядай пример на функцията. Надявам се да е от полза 

#ifndef COMPANY_MEMORY_UTILS_H
#define COMPANY_MEMORY_UTILS_H

#include "Company.h"
using namespace std;

typedef unsigned char byte;

vector<Company> readCompaniesFromMemory(byte* memory, int numOfCompanies)
{
    vector<Company> allCompanies;
    for(int i = 0; i < numOfCompanies; ++i)
    {
        unsigned char idd = (*memory);
        int id = (int)idd;
        vector<char> namee;
        while(memory++)
        {
            if((*memory) != '\0' || (*memory) != 0)
                namee.push_back((*memory));
            else
                break;
        }
        string name;
        for(int k = 0; k < namee.size(); ++k)
		{
            name += namee[k];
		}
        ++memory;
        int numOfEmployees = (int)(*memory);
        vector<pair <char, char>> employeeNames;
        for(int k = 0; k < numOfEmployees; ++k)
        {
            ++memory;
            char first = toupper((*memory));
            ++memory;
            char second = toupper((*memory));
            employeeNames.push_back(pair <char, char> {first, second});
        }
        Company comp(id, name, employeeNames);
        allCompanies.push_back(comp);
        ++memory;
    }
    return allCompanies;
}
#endif // !COMPANY_MEMORY_UTILS_H

 

0
ThomasMore avatar ThomasMore -19 Точки

It proposes recognizing how to look at tremendous books inside a matter of an hour by methods for carefully assessing the summary of parts, examining and rehashing key territories and segments, and utilizing the subject once-over. On the off chance that you need to complete your organization, understand how to analyze. 

by: https://articleoftheweek.com/

-1
zzerro avatar zzerro 16 Точки

Считай го сякаш е най-обикновен масив, все едно

byte memory[]

 

А, дали функцията ще го тълкува като пойнтер(както е показал @Filipbg) или като  масив, е все едно. Обърни внимание, че името на масива е всъщност константен пойнтер към първия му елемент. Затова и двата начина ще работят еднакво(но достъпът през пойнтер е по-бърз от достъпа през индекси):

vector<Company> readCompaniesFromMemory(byte* memory, int numOfCompanies);


vector<Company> readCompaniesFromMemory(byte memory[], int numOfCompanies);

 

0
02/12/2019 20:02:07
Vankata83 avatar Vankata83 72 Точки

Благодаря на всички.

В крайна сметка се оказа нещо доста тъпо написано от моя страна, за да не мога да си рънна кода. Инициализирам вектора, който ще връщам с размер, който въобще не му е мястото там ;)

Както и да е :)

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

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