LINUX.ORG.RU

История изменений

Исправление zaz, (текущая версия) :

Маленький пример: simpleq. (Другие там у меня тоже есть.)

Вопрос был удобстве использования, сравните

std::list<int> iList;
iList.inset(1);
iList.clear();
vs
struct IntEntry {
  int val;
  SIMPLEQ_ENTRY(IntEntry) link;
};
SIMPLEQ_HEAD(iList, IntEntry) iList;
IntEntry *e = malloc(sizeof(IntEntry));
e->val = 1;
SIMPLEQ_INSERT_TAIL(iList, e, link);

while ((e = SIMPLEQ_FIRST(iList)) != NULL) {
  SIMPLEQ_REMOVE_HEAD(iList, link);
  free(e);
}
причем при очистке списка есть явный оверхед который можно убрать если откозатся от их макросов. И остается открытым мой вопрос о структурах отлычных от списков.

Ага, совсем не несёт.

В принципе это очень не много, по хорошему день-два работы + нужно как правило не все а только некоторые структуры + кроме списков там ничего нету (нет ни RB деревьев ни векторов ни строк)

Я не говорю что библиотека безполезная и не нужная, но как по мне на роль «стандартной библиотеки шаблонов для C» она мягко говоря не тянет.

Исходная версия zaz, :

Маленький пример: simpleq. (Другие там у меня тоже есть.)

Вопрос был удобстве использования, сравните

std::list<int> iList;
iList.inset(1);
iList.clear();
vs
struct IntEntry {
  int val;
  SIMPLEQ_ENTRY(IntEntry) link;
};
SIMPLEQ_HEAD(iList, IntEntry) iList;
IntEntry *e = malloc(sizeof(IntEntry));
e->val = 1;
SIMPLEQ_INSERT_TAIL(iList, e, link);

while ((e = SIMPLEQ_FIRST(iList)) != NULL) {
  SIMPLEQ_REMOVE_HEAD(iList, link);
  free(e);
}
причем при очистке списка есть явный оверхед который можно убрать если откозатся от их макросов. И остается открытым мой вопрос о структурах отлычных от списков.

Ага, совсем не несёт.

В принципе это очень не много, по хорошему день-два работы + нужно как правило не все а только некоторые структуры + кроме списков там ничего нету (нет ни RB деревьев ни векторов ни строк)

Я не говорю что библиотека безполезная и не нужная, но как по мне на роль «стандартной библиотеки шаблонов для C» она мягко говоря не тянет.