powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Различные структуры данных. Реализация
25 сообщений из 422, страница 6 из 17
Различные структуры данных. Реализация
    #38882094
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyИ в принципе их можно понять. Снобизм вообще понятная штука ))
Не снобизм. Это последовательность эволюции. Никто не ставил задачи впихнуть всё фишки в квази-ассемблер для Юникса.
"С" на тот момент и так был прорывом.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882116
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТолько потому, что компоновщику совершенно по барабану как именно компилятор задекорирует имя. Одно имя на две точки входа он (компоновщик) всё равно не умеет.
Так я и говорю. Линкер тут вообще не причем. Если компилятор захочет он найдет как организовать перегрузку. Но он не хочет ))
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882118
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton"С" на тот момент и так был прорывом.
А я не про тот момент. Я про этот.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882133
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonУ меня при слове ЭВМ начинается когнитивный диссонанс и раскаты смеха. Еще-бы написали "табулятор". Или счётная "машинка".
Честно скажу я нечитал этих замечательных людей. Но сам факт заимствования терминологии из середины 20-го века
доставляет. Ну да бох с ними
ничего там страшного нет
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882160
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovskymayton"С" на тот момент и так был прорывом.
А я не про тот момент. Я про этот.
А ну ОК. А почему только "С" ? Давайте поставим общий вопрос.

Перегрузка операторов в современных ЯП. Прошлое. Настоящее. Будущее.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882169
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Похоже на название топика в другом форуме ))
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882172
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В программинге? Или в ПТ?
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882174
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ программинге? Или в ПТ?
Это вопрос к модератору
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882193
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА ну ОК. А почему только "С" ? Давайте поставим общий вопрос.

Перегрузка операторов в современных ЯП. Прошлое. Настоящее. Будущее.

может глобальнее поставить: зачем вообще нужна перегрузка операторов?
Лично мне интересно. Побаловался с этой темой тыкаясь в С++, но как-то не заценил.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, подними новый тред в С++.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882205
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonА ну ОК. А почему только "С" ? Давайте поставим общий вопрос.

Перегрузка операторов в современных ЯП. Прошлое. Настоящее. Будущее.

может глобальнее поставить: зачем вообще нужна перегрузка операторов?
Лично мне интересно. Побаловался с этой темой тыкаясь в С++, но как-то не заценил.

странно, по-моему так достаточно очевидно:
-- для того, чтобы не думать очень долго над названием функции
-- для того, чтобы иметь возможность реализовывать user defined data types , встроенные в языке, и передумать для них разные операции.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882361
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
нашел :)
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882363
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivDima Tпропущено...

может глобальнее поставить: зачем вообще нужна перегрузка операторов?
Лично мне интересно. Побаловался с этой темой тыкаясь в С++, но как-то не заценил.

странно, по-моему так достаточно очевидно:
-- для того, чтобы не думать очень долго над названием функции
-- для того, чтобы иметь возможность реализовывать user defined data types , встроенные в языке, и передумать для них разные операции.

Лично для меня, дело даже не в том чтобы подумать о названии функций, а в том, что на незачем создавать кучу функций с разными именами только из-за того, что у них разные параметры, поскольку смысловая нагрузка на функции сохраняется
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882373
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryЛично для меня, дело даже не в том чтобы подумать о названии функций, а в том, что на незачем создавать кучу функций с разными именами только из-за того, что у них разные параметры, поскольку смысловая нагрузка на функции сохраняетсяТы хочешь перегрузку функций в Си? Ну и запросто, объектное программирование никто не отменял.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882379
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlSashaMercuryЛично для меня, дело даже не в том чтобы подумать о названии функций, а в том, что на незачем создавать кучу функций с разными именами только из-за того, что у них разные параметры, поскольку смысловая нагрузка на функции сохраняетсяТы хочешь перегрузку функций в Си? Ну и запросто, объектное программирование никто не отменял.

Ниже код на С++, с использованием перегрузки функций

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
struct TreeNode* createTreeNode()
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	tn->w = NULL;
	tn->count = 0;
	tn->left = NULL;
	tn->right = NULL;
	return tn;
}

struct TreeNode* createTreeNode(const char* w)
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	tn->w = NULL;
	tn->w = (char*)malloc(sizeof(char)*(strlen(w)+1));
	strcpy(tn->w, w);
	tn->count = 1;
	tn->left = NULL;
	tn->right = NULL;
	return tn;
}



как вы предлагает сделать аналогичное на Си ?
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882380
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше так,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
struct TreeNode* createTreeNode()
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	tn->w = NULL;
	tn->count = 0;
	tn->left = tn->right = NULL;
	return tn;
}

struct TreeNode* createTreeNode(const char* w)
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	tn->w = NULL;
	tn->w = (char*)malloc(sizeof(char)*(strlen(w)+1));
	strcpy(tn->w, w);
	tn->count = 1;
	tn->left = tn->right = NULL;
	return tn;
}
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882383
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марк, а что не так в слове ЭВМ ? Или ВМ
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882398
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДо кучи. Статья на тему

http://tproger.ru/translations/art-of-structure-packing/

Однако, в этой работе есть ряд вопросов рассмотрен не полностью.
1. Применяется ли концевое заполнение в том случае, если после структуры располагается не элемент такого-же типа ? Вообще, концевое заполнение необходимо лишь в том случае, если объявляется массив структур
2. Смутили тривиальные предложения

авторПрежде чем мы коснемся структур, следует упомянуть массивы скалярных величин. На платформе с выравниванием данных массивы char/short/int/long или указателей располагаются в памяти последовательно, без заполнения.

3. Тут возможно ошибка
авторБитовые поля позволяют объявить переменные, занимающие меньшую, чем char память, вплоть до 1 бита. Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
struct foo5 {
    short s;
    char c;
    int flip:1;
    int nybble:4;
    int septet:7;
};




Важно помнить, что они реализованы с помощью маски поверх байта или машинного слова и не могут выходить за его пределы.

С точки зрения компилятора битовые поля структуры foo5 выглядят как двухбайтовые значения, из 16 бит которых используются только 12. Место после них заполняется так, чтобы размер структуры был кратен sizeof(short) — размеру наибольшего элемента.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
struct foo5 {
    short s; /* 2 байт */
    char c; /* 1 байт */
    int flip:1; /* всего 1 бит */
    int nybble:4; /* всего 5 бит */
    int septet:7; /* всего 12 бит */
    int pad1:4; /* всего 16 бит = 2 байт */
    char pad2; /* 1 байт */
};



Может быть вот так должно быть ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
struct foo5 {
    short s; /* 2 байт */
    char c; /* 1 байт */
    char pad0; /* 1 байт */
    int flip:1; /* всего 1 бит */
    int nybble:4; /* всего 5 бит */
    int septet:7; /* всего 12 бит */
    int pad1:4; /* всего 16 бит = 2 байт */
    char pad2; /* 1 байт */
};



Сейчас конечно потестирую, но по концевому заполнению пояснено недостаточно чётко
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882399
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
struct foo5 {
    short s; /* 2 байт */
    char c; /* 1 байт */
    char pad0; /* 1 байт */
    int flip:1; /* всего 1 бит */
    int nybble:4; /* всего 5 бит */
    int septet:7; /* всего 12 бит */
    int pad1:4; /* всего 16 бит = 2 байт */
};
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882402
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryWhite Owlпропущено...
Ты хочешь перегрузку функций в Си? Ну и запросто, объектное программирование никто не отменял.

Ниже код на С++, с использованием перегрузки функций

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
struct TreeNode* createTreeNode()
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	tn->w = NULL;
	tn->count = 0;
	tn->left = NULL;
	tn->right = NULL;
	return tn;
}

struct TreeNode* createTreeNode(const char* w)
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	tn->w = NULL;
	tn->w = (char*)malloc(sizeof(char)*(strlen(w)+1));
	strcpy(tn->w, w);
	tn->count = 1;
	tn->left = NULL;
	tn->right = NULL;
	return tn;
}



как вы предлагает сделать аналогичное на Си ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
struct TreeNode* createTreeNode(const char* w)
{
	struct TreeNode* tn = (struct TreeNode*)malloc(sizeof(struct TreeNode));
	if(w) {
		tn->w = (char*)malloc(sizeof(char)*(strlen(w)+1));
		strcpy(tn->w, w);
		tn->count = 1;
	} else {
		tn->w = NULL;
		tn->count = 0;
	}
	tn->left = NULL;
	tn->right = NULL;
	return tn;
}

Правда сложно? Здесь никак не обойтись без перегруженных функций.
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882413
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По 3 пункту вопрос снят, всё ок.

Мне кажется что с перегруженными функциями код выглядит логичнее. Вы усложнили алгоритм за счёт побочных операций, мне кажется, что это того не стоит. Хотя я конечно намного менее опытный, может быть позже соглашусь с такой точкой зрения
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882423
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryПо 3 пункту вопрос снят, всё ок.

Мне кажется что с перегруженными функциями код выглядит логичнее. Вы усложнили алгоритм за счёт побочных операций, мне кажется, что это того не стоит. Хотя я конечно намного менее опытный, может быть позже соглашусь с такой точкой зрения
а кто тебе мешает написать функцию с другим именем?
Код: plaintext
1.
struct TreeNode* createTreeNodeEmpty()
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882429
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)SashaMercuryПо 3 пункту вопрос снят, всё ок.

Мне кажется что с перегруженными функциями код выглядит логичнее. Вы усложнили алгоритм за счёт побочных операций, мне кажется, что это того не стоит. Хотя я конечно намного менее опытный, может быть позже соглашусь с такой точкой зрения

а кто тебе мешает написать функцию с другим именем?
Код: plaintext
1.
struct TreeNode* createTreeNodeEmpty()



SSMasterZivпропущено...


странно, по-моему так достаточно очевидно:
-- для того, чтобы не думать очень долго над названием функции
-- для того, чтобы иметь возможность реализовывать user defined data types , встроенные в языке, и передумать для них разные операции.

Лично для меня, дело даже не в том чтобы подумать о названии функций, а в том, что на незачем создавать кучу функций с разными именами только из-за того, что у них разные параметры, поскольку смысловая нагрузка на функции сохраняется
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882430
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может кто-нибудь привести пример/частный случай, когда использование перегруженных функций хуже чем решения данного вопроса(примера) на языке Си (т.е. чем отсутствие перегрузки функций) ?
...
Рейтинг: 0 / 0
Различные структуры данных. Реализация
    #38882484
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПравда сложно? Здесь никак не обойтись без перегруженных функций.и теперь ты должен знать реализацию твоей createTreeNode(const char* w). Ведь по декларации функции не понятно, можно ли туда передавать NULL, и что будет, если его туда передать. В случае перегрузки createTreeNode(); и createTreeNode( const char *w ); код самодокументирован. Если бы ещё не w, а имя осмысленное дать параметру, и элементу структуры...
...
Рейтинг: 0 / 0
25 сообщений из 422, страница 6 из 17
Форумы / C++ [игнор отключен] [закрыт для гостей] / Различные структуры данных. Реализация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]