![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Специально для любителей шОблоноф и прочих 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
Date: 2009-07-19 03:06 pm (UTC)no subject
Date: 2009-07-19 03:54 pm (UTC)а можно на рубях?
ну не люблю я статичную типизацию, да
no subject
Date: 2009-07-20 06:38 am (UTC)алсо, чуть не забыл: руби — херня.
no subject
Date: 2009-07-20 06:42 am (UTC)зато удобная херня, ага.
пысы. не, ну я мог смалтолку предложить... но эт уже издевательство было б
no subject
Date: 2009-07-20 06:48 am (UTC)(no subject)
From:(no subject)
From:(в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:Re: (в ужасе мацая подбородок)
From:вдогон
From:Re: (в ужасе мацая подбородок)
From:no subject
Date: 2009-07-20 07:25 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:нифига!
From:(no subject)
From:no subject
Date: 2009-07-19 06:49 pm (UTC)Писанины, конечно, побольше :)
Но есть и преимущества:
- не нужно каждый раз писать название указателя на следующий член;
- значительное повышение вашей незаменимости для работодателя :)
no subject
Date: 2009-07-19 06:54 pm (UTC)no subject
Date: 2009-07-19 06:55 pm (UTC)no subject
Date: 2009-07-19 07:03 pm (UTC)no subject
Date: 2009-07-20 06:39 am (UTC)с похмелюги почитал — гойлова ещё сильней заболела…
мм?
Date: 2009-07-19 07:12 pm (UTC)Что я пропустил?
Re: мм?
Date: 2009-07-19 07:14 pm (UTC)Re: мм?
Date: 2009-07-19 07:21 pm (UTC)Re: мм?
Date: 2009-07-19 07:26 pm (UTC)По-твоему ее можно решить? (не говори пока решение, если ты его знаешь)
Re: мм?
Date: 2009-07-19 07:40 pm (UTC)Re: мм?
From:Re: мм?
From:Re: мм?
From:Re: мм?
From:Re: мм?
From:Re: мм?
From:Re: мм?
From:no subject
Date: 2009-07-20 06:40 am (UTC)no subject
Date: 2009-07-20 07:07 am (UTC)no subject
Date: 2009-07-20 07:11 am (UTC)no subject
Date: 2009-07-20 07:11 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-07-20 07:13 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2009-07-20 07:23 am (UTC)no subject
Date: 2009-07-20 07:26 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(закукливается в iddqd)
From:Re: (закукливается в iddqd)
From:Re: (закукливается в iddqd)
From:Re: (закукливается в iddqd)
From:Re: (закукливается в iddqd)
From:Re: (закукливается в iddqd)
From:Re: (закукливается в iddqd)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-07-20 07:29 am (UTC)(no subject)
From:(no subject)
From: