Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
#1

Intrusive list template - C++

30.08.2009, 11:20. Просмотров 1249. Ответов 6
Метки нет (Все метки)

intrusive list template

для тренировки хочу попробовать написать шаблон списка, который объединяет и принимает элементы унаследованные или созданые от базового класса

зы задачка учебная, вводные: не использовать шаблонов контрейнеров stl
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2009, 11:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Intrusive list template (C++):

[template] почему код не компилируется без конструктора - C++
добрый вечер. вопрос поместил прямо в коде. http://rextester.com/AESO94403 #include <iostream> #include <string> #include...

Перенаправление указателя при перегрузке оператора в variadic template - C++
Есть вот такой вот код (сделан в vs2014): #include "stdafx.h" #include <iostream> #include <conio.h> #include <math.h> ...

template и __property - C++ Builder
Вот описание class DataTo public: __property byte Byte={read=GetA,write=SetA}; __property int Int={read=GetA,write=SetA}; ...

virtual template function - C++ Builder
В С++ нельзя делать шаблонные виртуальные методы. Как можно это обойти в этом коде. Есть ряд значений (список). Его шаблонный...

Rad studio template class error - C++ Builder
файл Block.h //--------------------------------------------------------------------------- #ifndef BlockH #define BlockH ...

Ошибка E2396 Template argument must be a constant expression - C++ Builder
Нужна помощь профессионала. Есть такой код class TMySet { public: TMySet(const int &AMin, const int &AMax, const int &AValue)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
30.08.2009, 11:25 #2
так ты хочешь? или хочешь чтоб мы написали?)
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
30.08.2009, 11:35 #3
boost::intrusive::list
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 16:19  [ТС] #4
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
так ты хочешь? или хочешь чтоб мы написали?)
ну можно, чтоб написали или подсказали как это делается

меня в основном интересует, как сделать в компиляторе проверку, что в шаблон подсунут потомок базового класса

Добавлено через 1 час 1 минуту
и еще интересует как по возможности избежать оверхида, если проверку компилятора кинет в рантайм

зы ваще есть возможность проверить перед генерацией шаблона от кого был унаследован его параметр и если что прервать генерацию?
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
30.08.2009, 21:15  [ТС] #5
похоже я запутался как в реалзиации, так и в терминах ...

в общих чертах, пока безо всяких template, чем отличается intrusive от non-intrusive контейнеры?
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
31.08.2009, 19:26  [ТС] #6
вроде разобрался

intrusive_list<T> практически тоже самое, что list<T*>

какими тестами и как обычно сравнивают производительность реализаций списков?
_mayor
1 / 1 / 0
Регистрация: 29.08.2009
Сообщений: 63
01.09.2009, 19:13  [ТС] #7
увяз в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
struct slink {
    slink* next;
    slink(slink* p=0):next(p) {}
};
 
struct lint: public slink {
    int i;
    //bool operator==(const lint& l) { return i==l.i;}
    //bool operator!=(const lint& l) { return i!=l.i;}
};
 
template<class T> class intrusive_list {
    T *head;
    T *last;
    size_t s;
    public:
    class iterator {
        T* p;
        public:
        iterator(T* pp):p(pp) {}
        iterator& operator++(int ) { 
            p=p->next;
            return *this;
        }
        T& operator*() { return *p; }
как обычно конфликт
T* p;
p=p->next

решают?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2009, 19:13
Привет! Вот еще темы с ответами:

Ошибка при комилировании. Cannot use template 'texnika<T>' without specifying specialization parameters - C++ Builder
Выходит вот такая ошибка: Unit1.cpp(34): E2102 Cannot use template 'texnika&lt;T&gt;' without specifying specialization parameters ...

Could not deduce template argument - Visual C++
Не могу понять что происходит. Имеется код: typedef bool (compare_function)(const void *a, const void *b); template &lt;class T&gt; bool...

Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier - C++
Решил подправить свой класс с использованием шаблонов, но столкнулся со следующим косяком. Если я прописываю тело функций внутри описания...

'MyQueue' : use of class template requires template argument list - C++
Написал код про шаблоны. Не могу понять почему выводит ошибку во время наследования класса. ошибки 'MyQueue' : use of class template...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.09.2009, 19:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru