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
зато удобная херня, ага.
пысы. не, ну я мог смалтолку предложить... но эт уже издевательство было б
no subject
(no subject)
(no subject)
(в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
Re: (в ужасе мацая подбородок)
вдогон
Re: (в ужасе мацая подбородок)
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
с похмелюги почитал — гойлова ещё сильней заболела…
мм?
Что я пропустил?
Re: мм?
Re: мм?
Re: мм?
По-твоему ее можно решить? (не говори пока решение, если ты его знаешь)
Re: мм?
Re: мм?
Re: мм?
Re: мм?
Re: мм?
Re: мм?
Re: мм?
Re: мм?
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)
(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)
(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)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
(no subject)
(no subject)