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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Peoples
1142 / 646 / 418
Регистрация: 06.02.2016
Сообщений: 1,680
Записей в блоге: 11
Завершенные тесты: 4
#1

Где можно посмотреть коды шаблонов STL? - C++

14.08.2016, 15:31. Просмотров 653. Ответов 21

Не подскажите где можно посмотреть коды шаблонов stl. То есть конкретно код реализации шаблона sort например.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2016, 15:31     Где можно посмотреть коды шаблонов STL?
Посмотрите здесь:
C++ Можно ли посмотреть в нормальном виде описание STL методов и функций?
Подскажите где можно посмотреть исходники C++
Где можно посмотреть функции подключаемых директив? C++
strtok_s где можно посмотреть сам принцип функции C++
Где можно найти код реализации библиотеки STL C++
Библиотека шаблонов STL C++
Где можно посмотреть все функции по работе с динамической памятю в C++ ? Может кто сайт знает C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13053 / 7316 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
14.08.2016, 18:15     Где можно посмотреть коды шаблонов STL? #16
Цитата Сообщение от hoggy Посмотреть сообщение
реально, такое впечатление, что они прочли Макконелла и Мартина
Чет мне кажется, что оно существовало еще до выхода этих книг
gru74ik
Модератор
Эксперт CЭксперт С++
4106 / 1751 / 197
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
14.08.2016, 18:38     Где можно посмотреть коды шаблонов STL? #17
Цитата Сообщение от Croessmah Посмотреть сообщение
мне кажется, что оно существовало еще до выхода этих книг
У Макконнелла первое издание "Code Complete" вышло в 1993 году.
HelicopterK52
659 / 202 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
14.08.2016, 18:39     Где можно посмотреть коды шаблонов STL? #18
Цитата Сообщение от gru74ik Посмотреть сообщение
У Макконнелла первое издание "Code Complete" вышло в 1993 году.
gcc вышел раньше В 87-ом, вроде ли в 85-ом...
Возможно, после просмотра исходников gcc Макконнелл и решил написать свою книгу
gru74ik
Модератор
Эксперт CЭксперт С++
4106 / 1751 / 197
Регистрация: 20.02.2013
Сообщений: 4,856
Записей в блоге: 21
14.08.2016, 18:45     Где можно посмотреть коды шаблонов STL? #19
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
gcc вышел раньше В 87-ом, вроде ли в 85-ом...
Зато STL и Boost появились позже.
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
14.08.2016, 20:09     Где можно посмотреть коды шаблонов STL? #20
Цитата Сообщение от Croessmah Посмотреть сообщение
Я код gcc тоже прекрасно читаю.
А я брезгую читать код с файловых помоек.

Добавлено через 1 час 21 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
да и тем, через полгода приходится заново вдуплять.
Да не то слово. Бывает что заново вдуплять не то что через пол-года, через пол-месяца приходится даже при таком подходе к именам:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template <class Type, class OwnerType> class TProcessingLists;
template <class Type,class OwnerType, unsigned StatesCountT>
class TProcessableObject :public TOwnedObject<Type, OwnerType>{ 
private:    
    friend class TProcessingLists<Type, OwnerType>;
    int ProcessingListsIds[StatesCountT];
protected:  
    bool GetState(int StateId){ return ProcessingListsIds[StateId] !=   NotInList; }
    void SetState(int StateId, bool NewValue){
        if (NewValue == State[StateId]) return;
        if (NewValue) Owner->AddProcess(StateId, (Type*)this);
        else Owner->RemoveProcess(StateId, (Type*)this);
    }
    RWproperty(GetState, SetState) bool State[];
public:
    static const int StatesCount = StatesCountT;
    TProcessableObject(OwnerType *aOwner) :TOwnedObject(aOwner){
        for (int i = 0; i < StatesCount; i++) ProcessingListsIds[i] = NotInList;
    };
};
Почему и говорю что все эти сборники говноабреввиатур в коде STLисточник багов а посему либы написанные в таком стиле как stl по определению unsafe и вообще пригодны не более чем для хеллоувердов.
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
14.08.2016, 20:28     Где можно посмотреть коды шаблонов STL? #21
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
class TProcessableObject
М-м-м, давай уж все остальное выкладывай, посмотрим что там с источником багов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2016, 08:57     Где можно посмотреть коды шаблонов STL?
Еще ссылки по теме:
Библиотека стандартных шаблонов STL C++
C++ Стандартная библиотека шаблонов (STL)
C++ Организация шаблонов на языке С++, библиотека STL
C++ Стандартная библиотека шаблонов STL Алгоритмы
STL, или другая библиотека шаблонов C++

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

Или воспользуйтесь поиском по форуму:
Fulcrum_013
663 / 731 / 72
Регистрация: 14.12.2014
Сообщений: 5,699
Завершенные тесты: 3
15.08.2016, 08:57     Где можно посмотреть коды шаблонов STL? #22
Цитата Сообщение от Voivoid Посмотреть сообщение
посмотрим что там с источником багов
А багов с данной схемой нет. Работает как часы. Существуют вопросы ступенчатого наращивания функционала.
к примеру породить от потомка TProcessableObject
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
enum PhisicObjectState { posActive, posMoving, posSelfPropelled, posAffectCollision, posReceiveCollision };
class TBasePhisicObject :public TProcessableObject<TBasePhisicObject,TPhisicModel, 5>
{
private:    
    T3DCollider *FCollider;
protected:
    TBasePhisicObject(TPhisicModel* aOwner) :TProcessableObject(aOwner),FCollider(nullptr){};
    
public:
    static const  char *TypeName;
    static TBasePhisicObject* CreateInstance(TPhisicModel* Model, void *InstanceData);
    virtual void Process(){};
    virtual void Move(){};
    virtual void Update(){};
    virtual void UpdateSpeed(){};
    virtual void CheckPosition(TPositionChecker* Checker){};    
    virtual bool Collide(TBasePhisicObject *Other){ return false; };
 
    bool SetReceiveCollision(bool NewValue){
        State[posReceiveCollision] = NewValue && FCollider != nullptr;
         return NewValue;
    }
    bool GetReceiveCollision(){ return State[posReceiveCollision]; }
 
    T3DCollider* SetCollider(T3DCollider* NewCollider){
        FCollider = NewCollider;
        ReceiveCollision = FCollider != nullptr;
        return FCollider;
    };
 
    __State(pos, Active);
    __State(pos, Moving);
    __State(pos, SelfPropelled);
    __State(pos, AffectCollision);
    RW_property(bool,ReceiveCollision);
    dR_W_property(T3DCollider*, Collider);
 
    virtual ~TBasePhisicObject(){   
    };
};
увеличив количество списков обработки в которых он может содержаться при такой схеме нереально, можно только менять логику нахождения в списках.
Yandex
Объявления
15.08.2016, 08:57     Где можно посмотреть коды шаблонов STL?
Ответ Создать тему
Опции темы

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