Форум программистов, компьютерный форум CyberForum.ru

эффективное обращение со структурами - C++

Восстановить пароль Регистрация
 
ChipChop
1 / 1 / 0
Регистрация: 29.09.2016
Сообщений: 85
21.11.2016, 10:03     эффективное обращение со структурами #1
Всем привет.

Есть структура:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct infoRecord
{
    const char* szUid;
    const char* szName;
    const char* szSurname;
    const char* szDate;
    const char* szMoney;
    infoRecord()
    {
        szUid = nullptr;
        szName = nullptr;
        szSurname = nullptr;
        szDate = nullptr;
        szMoney = nullptr;
    }
};
Можно как-то более эффективно обращаться к ее полям?
Иными словами, уйти от пяти строк вызова myRecordArr.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
for (int i = 0; i < recordsAmount; i++)
    {
        delete[] myRecordArr[i].szUid;
        delete[] myRecordArr[i].szName;
        delete[] myRecordArr[i].szSurname;
        delete[] myRecordArr[i].szDate;
        delete[] myRecordArr[i].szMoney;
    }
 
void SetData(infoRecord* Obj, int& amount, char* s1, char* s2, char* s3, char* s4, char* s5)
{
    Obj[amount].szUid = s1;
    Obj[amount].szName = s2;
    Obj[amount].szSurname = s3;
    Obj[amount].szDate = s4;
    Obj[amount].szMoney = s5;
    amount++;
}
И еще вопрос на засыпку - как лучше обозвать структуру, хранящую 5 указателей на текстовые строки с инфой о человеке?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2016, 10:03     эффективное обращение со структурами
Посмотрите здесь:

C++ Скотт Мейерс - Эффективное использование C++. 55 верных советов ...
C++ Обращение к вложенными структурами
Сложности со структурами C++
Работа со структурами C++
C++ Работа со структурами
Эффективное представление матрица C++
C++ Эффективное использование памяти

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
21.11.2016, 10:35     эффективное обращение со структурами #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ChipChop Посмотреть сообщение
Иными словами, уйти от пяти строк вызова myRecordArr.
C++
1
2
3
4
5
6
7
8
for (int i = 0; i < recordsAmount; i++)
    {
        delete[] myRecordArr[i].szUid;
        delete[] myRecordArr[i].szName;
        delete[] myRecordArr[i].szSurname;
        delete[] myRecordArr[i].szDate;
        delete[] myRecordArr[i].szMoney;
    }
C++
1
2
3
4
5
6
7
8
9
for (int i = 0; i < recordsAmount; i++)
    {
        infoRecord & record = myRecordArr[i];
        delete[] record.szUid;
        delete[] record.szName;
        delete[] record.szSurname;
        delete[] record.szDate;
        delete[] record.szMoney;
    }
Но здесь лучше std::string использовать. Тогда и delete`ы писать не надо будет.
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
21.11.2016, 10:39     эффективное обращение со структурами #3
Обозвать надо в соответствии с целью.
Если это клиенты банка, например, то Client.
Если сотрудники, то, Staff.

По поводу SetData.
Нельзя присваивать адреса параметров. Они могут быть временными массивами.
Память надо выделять самостоятельно и копировать строки.
C++
1
2
3
4
5
void SetData(infoRecord* Obj, int& amount, char* s1, char* s2, char* s3, char* s4, char* s5)
{
    Obj[amount].szUid=new char[strlen(s1)+1];
    strcpy(Obj[amount].szUid , s1);
...
ChipChop
1 / 1 / 0
Регистрация: 29.09.2016
Сообщений: 85
21.11.2016, 11:06  [ТС]     эффективное обращение со структурами #4
Цитата Сообщение от zss Посмотреть сообщение
По поводу SetData.
Нельзя присваивать адреса параметров. Они могут быть временными массивами.
Память надо выделять самостоятельно и копировать строки.
они как раз копируются перед SetData
Спасибо)
zss
Модератор
Эксперт С++
 Аватар для zss
5953 / 5558 / 1787
Регистрация: 18.12.2011
Сообщений: 14,204
Завершенные тесты: 1
21.11.2016, 12:49     эффективное обращение со структурами #5
Цитата Сообщение от ChipChop Посмотреть сообщение
они как раз копируются перед SetData
Это не спасет, если копирование выполняется в локальные переменные.
Поэтому, такие функции неприемлемы!
Yandex
Объявления
21.11.2016, 12:49     эффективное обращение со структурами
Ответ Создать тему
Опции темы

Текущее время: 22:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru