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

templates, STL - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача со звездочками http://www.cyberforum.ru/cpp-beginners/thread973689.html
Пользователь вводит число, а компьютер должен вывести на экран пирамидку, с такой высотой как число Например, пользователь ввел 3 * ** *** ** *
C++ SDL Отображение текста на экране Вывожу на экран текст формата *.ttf c помощью функции TTF_Render Эта функция может выводить только текст, а вот как вывести значение переменной? // *.h struct C_LoadImages { void ttfInit(); inline void ttfQuit() { TTF_CloseFont(font); TTF_Quit(); } http://www.cyberforum.ru/cpp-beginners/thread973669.html
C++ Странная ошибка
// ConsoleApplication5.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <vector> #include <cmath> #include <math.h> using namespace std;
Пользователь вводит вещественные числа x,y,z. Вычислить max(x+y+z, xyz) C++
Составить ДВЕ программы на языке C++ для решения одного из вариантов заданий с применением ОПЕРАТОРА if и с применением условий операции. Пользователь вводит вещественные числа x,y,z.Вычислить :max(x+y+z,xyz) Заранее Спасибо!
C++ Вместо своих данных в память вижу воистину неподдающееся объяснению явление какое-то http://www.cyberforum.ru/cpp-beginners/thread973645.html
Привет всем. Учусь кодить на C++. Решил в качестве практики написать линкер. Гружу объектник в память таким кодом: int ObjectFile::Load(char* FileName) { //Выводим имя файла printf("File: %s\n",FileName);
C++ namespace std Добрый день. Вычитал что могу использовать любой namespace. Но в другом месте написано что если не использовать std, то не сможет определится, например, cout. Так ли это? И если да, то как определить в каком пространстве какие имена? Спасибо. подробнее

Показать сообщение отдельно
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
10.10.2013, 22:06     templates, STL
Цитата Сообщение от Убежденный Посмотреть сообщение
Вы не могли бы привести пример того, как должен выглядеть программный
интерфейс list без шаблонов, используя только наследование и инкапсуляцию ?
Разумеется, должна быть поддержка любых типов. Только не говорите, что
будете делать это через макросы или приведения к <void *> - ни за что не
поверю, что это и есть "чистая объектная модель".
Всё очень просто. Пришлось правда сделать Complex -> Real -> Integer -> Unsigned -> Object.
Ну и банальное:
C++
1
2
3
4
5
6
class List {
public:
    virtual void put ( Object o, uint i = 0 );
    virtual Object get ( uint i );
    /***/
}
Сравнения заявлены в Object.
Не стоит сразу так кидаться палками. Я уже говорил, что время полной компиляции уменьшилось в 5 раз. С 70 часов до 12 часов. Имхо, это очень и очень существенно. В случае инкрементальной сборки, то сильно зависит от количества изменений их локации. При небольших изменениях в 3-4 относительно новых файлах (не в глубокой иерархической ( . )) собирается за секунды. Против от минуты до часа.
Из проблем - огромное количество кастов. Обобщений здесь нет и приходиться творить огород. Был даже сделать специальный кастер - темплейтовая штука, которая делает это чуть удобнее. Но она нигде не наследуется, а её использования необязательно. Почти как Java.
И уйдите подальше от камней. Да, почти как Java. Были вполне объективные причины не использовать Java. Наконец, было потрачено огромное количество времени на переписывание с нуля библиотек, ограничения в использовании буста и прочего. Но 12 часов собирается вместе с библиотекой. Да и писали мы по мере необходимости нередко быстро оборачивая шаблонный аналог, а потом переписывая оптимальнее. Если я правильно знаю, то до сих пор пишеться.

Вас, наверное, интересует производительность. Вот здесь я просто убился об стенку, когда узнал, как плохо написана библиотека. Поразительно, но заменив красно-чёрные деревья на куда более интересные декартовы деревья (они были немного изменены), произоводительность деревьев возрасла раза в 3, хоть разница и падала с ростом дерева. Но. Требовалось забить 2.5 гигабайта памяти, чтобы std:set работал быстрее нашего Set.
 
Текущее время: 13:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru