Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Пространные рассуждения об указателях и STL  (Прочитано 16999 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 15-12-2007 06:49 » 

Цитата: LogRus
dimka, забыл статический полиморфизе
?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 15-12-2007 07:35 » 

LogRus, а это просто отлично, что я не у вас Под столом

и утечки памяти зависят не от использования уже готовых и не известно как устроенных внутри загадочных std (!!!) Ага а лишь от кривости рук. Вот такая имха.

и снова повторюсь (и думай что хотишь): указатели - это красиво , удобно и быстра.
« Последнее редактирование: 15-12-2007 07:39 от Алексей1153++ » Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #2 : 15-12-2007 08:00 » 

dimka, шаблоны.

самый простой пример вектор или алгоритм find

опятьже стратегии, traits(не помню, как по руски), мета программирование + SFINAE

и снова повторюсь (и думай что хотишь): указатели - это красиво , удобно и быстра.

Ага, я просто не умею их готовить. Улыбаюсь

Кстати уже давно тут оффтоп устроили. Ну вот еще до кучи оффтопа, попропогандирую свою религию немного Улыбаюсь

Итератор вектора, на самом деле обычный указатель Улыбаюсь в релизной сборке а в дебажной он обёртка которая, если, что скажет, что ты случайно выбежал за приделы или еще чего налажал
так, что работая с вектором, я делаю это красиво, быстро и удобно

еще + от использования STL(в случае STLport 5.x) в дебажной сборке могут происходить проверки корректности операторов сравнения, если < говорит true, то поменяв его параметры true не получишь, если это не так то получаешь assert
« Последнее редактирование: 15-12-2007 08:13 от LogRus » Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 15-12-2007 11:14 » 

(ещё бы знать, чтот такое итератор Отлично )
как-то всё усложнять любишь Улыбаюсь
А с операторами сравнения проблем вообще как-то не испытывал никогда...
Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 15-12-2007 14:31 » 

Цитата: LogRus
dimka, шаблоны.
А, да. Я ими крайне редко пользуюсь. К канонам ООП это не относится, равно как и полиморфизм функций.

Цитата: Алексей1153++
ещё бы знать, чтот такое итератор
Твоя позиция несколько непонятна. Воинствующее ламерство?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 15-12-2007 14:38 » 

dimka, серьёзно не встречал такой термин , итерацию знаю

шаблонами, кстати, тоже ни разу не приходилось пользоваться
« Последнее редактирование: 15-12-2007 14:57 от Алексей1153++ » Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 16-12-2007 13:28 » 

Алексей1153++, примерчик с итератором:

Код: (C++)
#include <map>

// Создаем новый тип ассоциативного контейнера
typedef std::map<int, int> int_by_int_t;

// Ф-ия получает этот тип в параметре
void func(int_by_int_t table)
{
    // Создаем итератор для данного типа
    int_by_int_t::iterator it;
    int key, value;

    // С помощью итератора перебираем все значения в контейнере
    for (it = table.begin(); it != table.end(); it++)
    {
        key = it->first;
        value = it->second;
    }
}

По моему тут все предельно ясно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 16-12-2007 14:11 » 

насколько понял,
std::map - это аналог двумерного массива ?


хотя , судя по строке
for (it = table.begin(); it != table.end(); it++)

это не совсем так
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 16-12-2007 14:51 » 

Не - map - это ассоциативный контейнер. Это как индекс в БД: по ключу находится значение. В примере я показал последовательный доступ, а прямой доступ будет так:
Код:
value = table[key]

Леш, тут показаны два метода для итератора (присваивание и постинкремент) и два метода для контейнера (begin и end).
Методы begin() и end() возвращают итераторы, указывающие, соответственно, на первый элемент и на позицию за последним элементом.
Постинкремент итератора перемещает его на следующий элемент.
Это очень похоже как указатель, только сами данные скрыты в классе и не обязательно расположены единым блоком и в строгом порядке.
« Последнее редактирование: 16-12-2007 14:52 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 16-12-2007 14:56 » 

про работу
.begin();
.end()
it++
я так и понял, но про свойства map не знаю
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 16-12-2007 16:10 » 

Леш, тебе сюда: https://club.shelek.ru/download.php?id=146
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 16-12-2007 16:14 » 

ок, почитаю как освобожусь )
 Буду теперь кусять Логруса уже при помощи аргуметов Отлично
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #12 : 17-12-2007 10:47 » 

Алексей1153++, надеюсь. Улыбаюсь

Только не забуть еще прочитать: Ундервуда (Шаблоны С++), Александреску (Современный дизайн C++), Мейерса (Эффективное использование STL), Бьёрна Карлсона(Beyond the C++ Standard Library: An Introduction to Boost)

Улыбаюсь  а то скушновато, когда поспорить о за и против не с кем Улыбаюсь
Записан

Странно всё это....
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 17-12-2007 10:51 » new

LogRus, ну вот ты конечно вывалил списочек , мне бы до той книжки найти время добраться...

Но всё равно, сильно сомневаюсь, что буду это использовать. Время покажет
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 17-12-2007 10:56 » 

Лёш, есть на русском. Рекомендую "STL для начинающих" автор Леен Аммерааль.Очень доходчиво для начинающих именно принцип и идея. Вот тут первая глава для ознакомления. 26 страниц. Как скачаешь - удали, а то размерчик большой.
« Последнее редактирование: 18-12-2007 10:02 от Алексей1153++ » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #15 : 17-12-2007 10:58 » 

Но всё равно, сильно сомневаюсь, что буду это использовать. Время покажет

Нуууу я бы тебя даже предостерёг. Хуже наркотика. Один раз попробуешь, потом будет ломка каждый раз, когда без STL делать будешь. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #16 : 17-12-2007 11:00 » 

Джон, а я не буду привыкать Улыбаюсь)
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #17 : 17-12-2007 11:36 » 

Если серьёзно - то вещь полезная, удобная, быстрая и очень простая в использовании.
« Последнее редактирование: 17-12-2007 11:39 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #18 : 18-12-2007 10:00 » 

Джон, скачал твою книжку тоже. Что-то я её сразу не заметил вчера )
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #19 : 18-12-2007 10:56 » 

Мне в своё время повезло, что я на неё наткнулся. А то времени вобще не было дополнительно с чем-нить разбираться.
А 26 страниц всё-таки можно себе позволить.

Ну а потом уже консультировался с "Thinking in C++". Очень много примеров использования. Тоже рекомендую. Её полно в инете.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines