Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Эксперт С++
1608 / 939 / 778
Регистрация: 06.02.2016
Сообщений: 2,426
Записей в блоге: 30
1

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

14.08.2016, 15:31. Показов 2398. Ответов 21

Не подскажите где можно посмотреть коды шаблонов stl. То есть конкретно код реализации шаблона sort например.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2016, 15:31
Ответы с готовыми решениями:

Где посмотреть исходный код STL?
где можно посмотреть исходный код STL??

Можно ли посмотреть в нормальном виде описание STL методов и функций?
Допустим, мне нужно посмотреть, какие члены-функции есть в библиотеке <vector>. Чтобы это сделать,...

Где можно посмотреть исходники шаблонов проектов для C#?
Где можно посмотреть исходники шаблонов проектов для C#?

Подскажите где можно посмотреть коды клавиш в таком [#75] формате ...?
Есть коды для курсора клавиатуры : Срочно нужны коды клавиш R и L. Подскажите пожалуйста....

21
2055 / 1533 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
14.08.2016, 15:40 2
Лучший ответ Сообщение было отмечено Peoples как решение

Решение

Лежат себе в папочке include а в какой именно подпапке - зависит от IDE/компилятора в комплекте с которым идут.
Тока смотри аккуратно -там глаза сломать и мозг вывихнуть наизнанку можно если пытаться в этом навозе что либо разобрать
1
Эксперт С++
8678 / 4228 / 943
Регистрация: 15.11.2014
Сообщений: 9,596
14.08.2016, 15:42 3
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

в любой ИДЕ ПКМ на std::sort
из контекстного меню ---> "перейти к определению".
1
:)
Эксперт С++
4771 / 3265 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
14.08.2016, 15:46 4
Цитата Сообщение от Peoples Посмотреть сообщение
где можно посмотреть коды шаблонов stl
В любой IDE есть возможность перехода через какой-нибудь Ctrl+Click в место определения имени, на которое кликаешь.
1
802 / 529 / 157
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
14.08.2016, 16:18 5
Fulcrum_013, можете объяснить почему там все так непонятно написано? специально?
0
2055 / 1533 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
14.08.2016, 16:24 6
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
можете объяснить почему там все так непонятно написано? специально?
потому что говнокодеры безграмотные писали
0
Don't worry, be happy
17510 / 10319 / 1995
Регистрация: 27.09.2012
Сообщений: 25,956
Записей в блоге: 1
14.08.2016, 16:52 7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
можете объяснить почему там все так непонятно написано?
Не осилил, че.
Месье не понимает, что разработчики компиляторов вынуждены так писать.
И при определенном опыте, всё там без проблем читается.
3
710 / 282 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
14.08.2016, 17:02 8
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
потому что говнокодеры безграмотные писали
Да, с https://www.cyberforum.ru/post8889775.html и https://www.cyberforum.ru/post8891204.html не сравнить
0
Эксперт С++
8678 / 4228 / 943
Регистрация: 15.11.2014
Сообщений: 9,596
14.08.2016, 17:05 9
Цитата Сообщение от Croessmah Посмотреть сообщение
разработчики компиляторов вынуждены так писать
в чем заключается необходимость?
0
Don't worry, be happy
17510 / 10319 / 1995
Регистрация: 27.09.2012
Сообщений: 25,956
Записей в блоге: 1
14.08.2016, 17:10 10
Цитата Сообщение от hoggy Посмотреть сообщение
в чем заключается необходимость?
Например, в уменьшении коллизий с пользовательским кодом,
учетом множества платформ, разные наборы ключей и т.д.
0
2055 / 1533 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
14.08.2016, 17:19 11
Цитата Сообщение от Croessmah Посмотреть сообщение
Например, в уменьшении коллизий с пользовательским кодом,
учетом множества платформ, разные наборы ключей и т.д.
К примеру VCL и FireMonkey тоже под кучу платформ ключей и т.п. НО при этом прекрасно читабельны.

Добавлено через 1 минуту
Цитата Сообщение от Voivoid Посмотреть сообщение
Да, с С++ - победа над здравым смыслом и С++ - победа над здравым смыслом не сравнить
Зато у меня указатели двунправленные и объекты сами из контейнеров вычищаются если их удалить. А STL так не умеет.
0
Don't worry, be happy
17510 / 10319 / 1995
Регистрация: 27.09.2012
Сообщений: 25,956
Записей в блоге: 1
14.08.2016, 17:20 12
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
НО при этом прекрасно читабельны.
Я код gcc тоже прекрасно читаю.
0
Эксперт С++
8678 / 4228 / 943
Регистрация: 15.11.2014
Сообщений: 9,596
14.08.2016, 17:22 13
Цитата Сообщение от Croessmah Посмотреть сообщение
Например, в уменьшении коллизий с пользовательским кодом,
для этого существует нотация имен.
это не объясняет факт того, что сами по себе имена зачастую нечитабельные.

Цитата Сообщение от Croessmah Посмотреть сообщение
учетом множества платформ
стандартная библиотека пишется под ключ конкретного компилятора под конкретную платформу.
разные платформы и компиляторы - разные стандартные библиотеки.

Цитата Сообщение от Croessmah Посмотреть сообщение
разные наборы ключей и т.д.
стандартная практика, например того же boost:
вынести компиляторо-платформо-ключи зависимые вещи в отдельный конфигурационный хедер,
где возможные зависимости разруливаются на дефанах препроцессора.

при таком подходе удобно разруливать 100500 возможных нюансов.
в тоже время, в исходном коде конкретного компонента
можно использовать вполне себе человеко-читабельные имена.

однако на примере как стандартной библиотеки, которая под ключ тулченйа,
так и на примере кросс-платформенного boost,
мы наблюдаем аццкий говнокод.

я повторю свой вопрос: с чем связанна необходимость?

Добавлено через 1 минуту
Цитата Сообщение от Croessmah Посмотреть сообщение
Я код gcc тоже прекрасно читаю.
это лишь благодаря тому, что у вас скилл чтения говнокода квалификация позволяет.

однако способность справляться с дикарями,
не делает последних цивилизованными.
0
Don't worry, be happy
17510 / 10319 / 1995
Регистрация: 27.09.2012
Сообщений: 25,956
Записей в блоге: 1
14.08.2016, 17:58 14
Цитата Сообщение от hoggy Посмотреть сообщение
вынести компиляторо-платформо-ключи зависимые вещи в отдельный конфигурационный хедер,
где возможные зависимости разруливаются на дефанах препроцессора.
Угу, именно так оно и делается.
Цитата Сообщение от hoggy Посмотреть сообщение
разные платформы и компиляторы - разные стандартные библиотеки.
У одного компилятора на разных платформах, как правило,
изменены только те самые платформо-зависимые штуки,
всё остальное остается общим по мере возможностей.
Вот эти самые общие штуки очень хорошо читаются.
Цитата Сообщение от hoggy Посмотреть сообщение
для этого существует нотация имен.
угу, поэтому для реализации зарезервированы имена,
начинающиеся с двух подчеркиваний.
Эти имена, лично меня, бесят больше всего,
хотя при определенном уровне глазного парсера они не доставляют особых неудобств.
Цитата Сообщение от hoggy Посмотреть сообщение
это не объясняет факт того, что сами по себе имена зачастую нечитабельные.
как-правило, это сокращения, причем врядли они непонятны разработчикам,
и, скорее всего, стандартизированы главнюками
Цитата Сообщение от hoggy Посмотреть сообщение
однако способность справляться с дикарями,
не делает последних цивилизованными.
Красивые бусы из зубов врагов тоже не приводят к цивилизации
Цитата Сообщение от hoggy Посмотреть сообщение
так и на примере кросс-платформенного boost,
мы наблюдаем аццкий говнокод.
Наблюдаем, но это не значит, что оно прям вот не читаемо. Хотя, в бусте сам черт ногу сломит.
Однако, опять же, его разрабатывают, а значит и читают
Цитата Сообщение от hoggy Посмотреть сообщение
это лишь благодаря тому
И че, я один такой? А раз нет, значит явление массовое.
0
Эксперт С++
8678 / 4228 / 943
Регистрация: 15.11.2014
Сообщений: 9,596
14.08.2016, 18:09 15
Цитата Сообщение от Croessmah Посмотреть сообщение
как-правило, это сокращения, причем врядли они непонятны разработчикам,
и, скорее всего, стандартизированы главнюками
они не понятны всем, кроме непосредственных участников.
да и тем, через полгода приходится заново вдуплять.

реально, такое впечатление, что они прочли Макконелла и Мартина,
и сделали все с точностью наоборот.

обоснования этому явлению нет.
ничто не мешало в рамках плюсовой нотации.
элементарно - давать вменяемые имена переменным/функциям/etc.

Цитата Сообщение от Croessmah Посмотреть сообщение
Наблюдаем, но это не значит, что оно прям вот не читаемо.
именно что значит.
именно потому, что его приходится осиливать,
а не просто читать.
0
Don't worry, be happy
17510 / 10319 / 1995
Регистрация: 27.09.2012
Сообщений: 25,956
Записей в блоге: 1
14.08.2016, 18:15 16
Цитата Сообщение от hoggy Посмотреть сообщение
реально, такое впечатление, что они прочли Макконелла и Мартина
Чет мне кажется, что оно существовало еще до выхода этих книг
0
Эксперт CЭксперт С++
5074 / 2259 / 332
Регистрация: 20.02.2013
Сообщений: 5,595
Записей в блоге: 19
14.08.2016, 18:38 17
Цитата Сообщение от Croessmah Посмотреть сообщение
мне кажется, что оно существовало еще до выхода этих книг
У Макконнелла первое издание "Code Complete" вышло в 1993 году.
0
825 / 249 / 34
Регистрация: 27.07.2016
Сообщений: 497
Записей в блоге: 1
14.08.2016, 18:39 18
Цитата Сообщение от gru74ik Посмотреть сообщение
У Макконнелла первое издание "Code Complete" вышло в 1993 году.
gcc вышел раньше В 87-ом, вроде ли в 85-ом...
Возможно, после просмотра исходников gcc Макконнелл и решил написать свою книгу
1
Эксперт CЭксперт С++
5074 / 2259 / 332
Регистрация: 20.02.2013
Сообщений: 5,595
Записей в блоге: 19
14.08.2016, 18:45 19
Цитата Сообщение от HelicopterK52 Посмотреть сообщение
gcc вышел раньше В 87-ом, вроде ли в 85-ом...
Зато STL и Boost появились позже.
0
2055 / 1533 / 167
Регистрация: 14.12.2014
Сообщений: 13,326
14.08.2016, 20:09 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 и вообще пригодны не более чем для хеллоувердов.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.08.2016, 20:09
Помогаю со студенческими работами здесь

Где можно посмотреть АП ЯНДЕКСА?
ПОДСКАЖИТЕ ГДЕ МОЖНО ПОСМОТРЕТЬ КОГДА ПРОХОДИТ АП ЯНДЕКСА,САЙТЫ СО СТАТИСТИКОЙ,КОГДА БЫЛИ В КАКИЕ...

Где можно посмотреть ключи компилера?
вот билдер мы запускаем. Компилируем проект. Где написаны ключи с которыми мы компилируем?

Можно ли где-то посмотреть историю домена
Сегодня узнал что мой домен был зарегистрирован еще до меня) аж в далеком 2008 году. У меня вопрос,...

Где можно посмотреть исходники WinRar?
Просто интересно. Есть текстовый файл. Я знаю его содержимое.(частично) Первую строку точно. ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru