Entry tags:
Зодачка
Специально для любителей шОблоноф и прочих C++ наворотов. :) Сразу пердупердяю: задачка с подвохом.
Дано.
В программе есть некоторое количество классов, которые являются элементами односвязных списков с internal storage (проще говоря, это когда указатель на следующий элемент является членом класса).
Классы имеют вид:
Причем, варьируется не только название класса, но и название поля "nextListItem".
Задача.
Написать универсальную функцию вставки в начало списка с применением template, inline и pointer-to-member операторов. На входе должны быть: вставляемый элемент; указатель на первый элемент; название поля, указывающего на следующий элемент и тип класса. Функция может быть глобальной или членом namespace или функцией какого-либо нового класса - важно, чтобы она была одна, но работала для всех тех классов. Функция должна работать примерно так же, как ниже представленный #define:
Посчитать количество строк в полученной функции. Факультативно: перечислить и обосновать преимущества перед приведенным #define.
Дано.
В программе есть некоторое количество классов, которые являются элементами односвязных списков с internal storage (проще говоря, это когда указатель на следующий элемент является членом класса).
Классы имеют вид:
class MyClass... { MyClass *nextListItem;
Причем, варьируется не только название класса, но и название поля "nextListItem".
Задача.
Написать универсальную функцию вставки в начало списка с применением template, inline и pointer-to-member операторов. На входе должны быть: вставляемый элемент; указатель на первый элемент; название поля, указывающего на следующий элемент и тип класса. Функция может быть глобальной или членом namespace или функцией какого-либо нового класса - важно, чтобы она была одна, но работала для всех тех классов. Функция должна работать примерно так же, как ниже представленный #define:
#define INSERT_TO_LIST(firstItemPtr, item, nextItemName) \ (item)->nextItemName= (firstItemPtr), (firstItemPtr)= (item)
Посчитать количество строк в полученной функции. Факультативно: перечислить и обосновать преимущества перед приведенным #define.
no subject
no subject
no subject
no subject
Component Pascal, например. Smalltalk. Objective C, кстати сказать, очень достойная вещь.
no subject
no subject
no subject
no subject
no subject
no subject
цэпэпэ - инструмент для низкоуровнего програмленья, ага.
да, предупреждая стёб - слово "програмленье" - сложносоставное. от программирование и камланье.
no subject
no subject
выкинуть нахер новомодностя всякия, стл и иже. использовать молоток по назначению, вопчем. как строго типизированный асм для таймкритикал кусков. склеивать в целое нормальным языком. рубить руки желающим вылезти за пределы примитивов.
no subject
no subject
no subject
кстати, с какого хуя так сделано — мне до сих пор не ясно. суть
двачаvoid * как раз в том, чтобы быть совместимым по присваиванию в обе стороны со всем.нененене, даёшь Objective C во все поля! к тому же там объектная модель правильная, из смолтолка содраная.
no subject
одна из частейших конструкций была прагма алигновая, да.
и какое щасте, шо этот кошмар можно не вспоминать
no subject
no subject
а в ваткоме был
а гнусь ваще бедный родственник
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(закукливается в iddqd)
Re: (закукливается в iddqd)
Re: (закукливается в iddqd)
Re: (закукливается в iddqd)
Re: (закукливается в iddqd)
Re: (закукливается в iddqd)
Re: (закукливается в iddqd)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
кстате, почему «был»-то? у меня до сих пор есть. и у яблок тоже. %-)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
new спасет ацца демократии...
no subject
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject