![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Классы: как правильно заполнить std::vector?
По ходу m_pSL выходит из области видимости. Куда его впихнуть? Это сообщение отредактировал(а) Alca - 20.3.2009, 18:23 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
1) std::vector< const std::auto_ptr<TStringList> >
2) std::vector<boost::shared_ptr<TStringList> > 3) boost::ptr_vector 4) свой класс, подменяющий std::vector, хранящий указатели с выделенной памятью и вызывающий delete для указателей, которые из него удаляются |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Alca, А m_pSL тебе и не нужен. Ты же адреса запомнила. Значит и восстановить можешь.
Добавлено через 54 секунды
Да. Или сама освобождай память. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
Alca,
при выходе из области видимости исчезает переменная m_pSL, но не выделенный блок данных, на который она указывала. В деструкторе класса TfrmMain не забудь почистить вектор. std::vector< const std::auto_ptr<TStringList> > Здесь была могилка этой программы. :gigi:Это сообщение отредактировал(а) Rififi - 20.3.2009, 18:51 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Значит можно так?:
Это сообщение отредактировал(а) Alca - 23.3.2009, 12:27 |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Alca, а в чем прикол тогда вектора? Автоматически чистить не будет - ИМХО auto_ptr мне кажется лучше.
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
| Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
Anikmar, нельзя auto_ptr'ы в контейнеры класть. Тебе же vinter сказал
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Честно говоря я никогда не использовал auto_ptr - как-то привык сам за собой убирать. Но в данном конкретном случае чем плох такой подход? Почему нельзя? |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| Alca |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Так что ли??? |
||||||
|
|||||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
На примере можно? Что-то я не полнял. |
|||
|
||||
| Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
Мейерс: "При копировании auto_ptr право владения объектом, на который ссылается указатель, переходит к копии, а исходному указателю присваивается NULL." А вообще компилятор должен ругать и отказываться компилировать за попытку положить в контейнер auto_ptr. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Мда, не знал. (Правда думаю узнал бы сразу - как только использовать бы начал, было бы разочарование) - я для себя предполагал, что auto_ptr наиболее удобен как раз для векторов - когда нужно те объекты хранить, которые только через new создаются. Спасибо, буду знать на будущее. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
Поругать может, но отказываться компилировать - нет. Вдруг мне нужна именно такая логика? |
|||
|
||||
| Helmet |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 27.2.2009 Где: Someone's hea d Репутация: нет Всего: 1 |
zim22, опять же цитата из Мейерса: "Контейнеры auto_ptr (COAP, Containers of auto_ptr) запрещены, а программа, которая попытается их использовать, не будет компилироваться. Комитет по стандартизации С++ приложил неслыханные усилия в этом направлении."
Добавлено через 5 минут и 46 секунд
9 студия не компилирует. Говорит нет конструктора копирования. |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Так так можно делать?
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Ответь - ЗАЧЕМ? Где это нужно? Какой злой гений попросил тебя это вытворять с VCL? То что ты делаешь - это масло маслянное. Более того вообще не рекомендуются смешивать VCL и STL. Ты спросишь почему - а я тебе отошлю к Холингверту, Баттерфилду и их пацанам. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Ну мне кажется это слишком категорично. Неужели vector<TDateTime> тоже не надо использовать? Некоторые простые классы почему нельзя в вектор запихивать? |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
Тут заметил одну интересную фишку...
А что, BrainBench совсем испортился, что за такие вещи (std::vector< const std::auto_ptr<TStringList> >) теперь уже звание Master C++ дают? |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Пусть это будет на совести авторов. Они были убедительны.
А зачем? У VCL полно своего инструментария. Я лично никогда не мешаю бормановские классы со стандартными. Как то спокойнее. Да и необходимости в этом не вижу. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
У меня так как правило само собой получается, но этот конкретный пример я привел из своей практики - ну понадобился мне массив дат. Причем размер изначально непонятный, в процессе работы меняется. Что вы мне порекомендуете из стандартных средств VCL? Может я просто чего-то не знаю. TList? Неудобно - чистить надо. Второй момент - собственные классы, в состав которых входит та же дата либо еще какой-нибудь объект VCL. Тоже иногда вектор вполне подходит. Просто если такие ограничения действительно аргументированы - то надо к ним прислушаться. А если из разряда "неаккуратненько как-то" - то это чисто на вкус и на цвет. |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
mrbrooks, у всех свои тараканы, я вот например не стану юзать QT'шные поделки, которые есть в STL, хотя и использую QT. В этом нет ничего плохого
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
а нельзя просто вычислить индекс в StringList, например тебе нужна структура данных их 3х стринг листов, каждый из которых содержит 10 строк, тогда просто создаешь 1 StringList на 30 строк, 0-9-й элементы, это условно 1-й stringlist, 10-19й - 2-й, с 20-29й - 3-й StringList
|
|||
|
||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
vinter, за QT ничего не скажу. Не стал бы я в этом плане сравнивать VCL и QT
Его родимого. Можно TBaseArray, TValueArray. Насчет чистки - ну а кто сказал что будет легко.
Авторы были убедительны. Правда речь шла о шестом Бормане - но сомневаюсь я что что - то изменилось. |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Вот и я про то же. Зачем изобретать велосипед? Если приложение однозначно должно работать без VCL, то все понятно. Но почему объекты VCL нельзя запихивать в vector - для меня загадка. Vector - обычный шаблон и в нем вроде как нет ничего особенно такого, чтобы нельзя было применить конструкцию vector<TDateTime>. Проведу аналогию (господи, только бы к баяну не привел мой пример), использовать конструкцию while(true){..... только чтобы вместо goto использовать break. Лично я не вижу здесь никакой красоты и понятности, наоборот - дополнительный отступ, лишние переносы, следить лишний раз за скобками. Поэтому интересно было бы услышать действительно весомый аргумент: Не рекомендуется использовать vector<TDateTime> потому, что это может привести к таким-то отрицательным моментам:....... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
еретик |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Я так и знал |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Сейчас пролистываю мануал в поисках - в чем же загвоздка совместного использования - найти не нашел - но строгие указатели применяются авторами к объектам VCL на лево и на право. Добавлено через 57 секунд |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Думаю все дело в конкретных случаях. Ведь молотком надо гвозди забивать, но с дури можно и шурупы. Просто надо четко предстовлять себе как работает vector, сколько он сделает вызовов конструктора копирования, сколько создаст временных объектов и т.п. Достаточно много примеров неумелого использования шаблонов, а потом авторы кричат - полная лажа этот STL. А на самом деле просто неправильно пользуются. Лично видел один код, когда автор потратил уйму времени на создание конструкторов копирования, операторов присваивания для класса, котором было больше полусотни полей, причем часть из них стркутуры. Когда он все это запихал в вектор, да еще размером больше 100 тысяч элементов и получил ужасающие тормоза, он начал кричать, что STL писали полные ламеры и никакой оптимизации алгоритмов там нет. Он очень удивился, когда узнал, что через указатели все это делается гораздо проще и летает круче самолета. Добавлено через 3 минуты и 31 секунду
goto здесь не обсуждаем! Это был пример! Никто goto не должен боятся - он мирный и не кусается! Обсуждаем опасность конструкции vector<TDateTime> Почему я должен использовать TList в данном случае. И что будет плохого, если все-таки использую vector. Вопрос не праздный - я действительно использовал vector<TDateTime> и если это опасно - я срочно переделаю код, пока помню где это. Хочу знать: почему опасно? |
||||
|
|||||
| mrbrooks |
|
||||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Про нечто подобное и писали авторы.
Я честно говоря таких не встречал. Наоборот в STL сила С++ имхо. Добавлено через 1 минуту и 9 секунд По памяти вспомнить не могу - давно читал - но помню два слова относительно VCL - осторожно и Дельфи. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если у TDateTime есть правильно реализованные конструктор по умолчанию и конструктор копий, то, имхо, опасности использования в векторе никакой. если будете хранить в векторе по указателю, то придется самому следить за удалением.. стандартные средства (стд) такого не поддерживают. |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Если вспомните, скажите пожалуйста. Очень интересно, если честно. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Предполагаю из за бинарной совместимости, std::vector не рекомендуется передавать между приложением и библиотекой. насчет VCL не знаю есть ли, но по идеи они должны гарантировать совместимость для "своих" типов. Это сообщение отредактировал(а) mes - 23.3.2009, 16:41 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Что значит бинарная совместимость? Ведь объект vector создается налету - как же он бинарно может быть не совместим? Копипастим vector и делаем его нешаблонным, что изменится? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
отсутствие бинарной совместимости означает что в двух приложениях(откомипилированных разными компиляторами или разными версиями одного) один и тот же объект (vector) , будет иметь разную бинарную структуру и в таком случае передавать объект одного другому приложению нельзя. В пределах одного приложения проблем по вышеообозначеному предмету соответсвенно нет. Это сообщение отредактировал(а) mes - 23.3.2009, 16:55 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Ну так можно сказать про любой класс. Почему это только на вектор распространяется? Ведь любой класс, откомпилированный разными компиляторами (да даже и одним и тем же с разными настроуками выравнивания) может оказаться бинарно несовместимым. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вектор был для примера, речь идет о библиотеках в целом : std и VCL первый абзац : http://qt.osdn.org.ua/binarycompat.html Это сообщение отредактировал(а) mes - 23.3.2009, 17:10 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Как можно в VCL работать с динамическими массива любого типа? Это сообщение отредактировал(а) Alca - 23.3.2009, 17:38 |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
успокойся, это НЕОПАСНО. Можно использовать VCL и STL вместе. И с boost можно. Никаких противопоказаний нет. Требования к VCL классам такиеже как и к обычным классам при использовании с STL. Другое дело, что в лит-ре встречаются рекомендации наподобии: "если Вы используете какую-то библиотеку, то пользуйтесь ею по-максимуму" т.е. если вы пользуетесь VCL, то используйте ее динамический массив (совсем необязательно TList, который нешаблонный и хранит указатели и нужно кастить). В VCL есть вроде как шаблонные классы что-то типа DynamicArray<> и они вполне адекватная альтернатива STL. Логика тут такая : если можно обойтись одной библиотекой, то зачем использовать две... |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Имхо, этот в вопрос лучше задать в ветке по борланду. интуитивно предполагаю, что это должен быть TArray<> Это сообщение отредактировал(а) mes - 23.3.2009, 17:54 |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
ИМХО
STL входит в стандарт языка (думаю boost тоже войдет). Касаемо других библиотек - согласен. Но STL - это уж вроде как незыблемо. А вот аналога vector я в VCL не знаю, если честно. А в MFC (CLR) есть? |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Вообще-то билиотека в обычном понимании - библиотека объектных модулей и библиотека стандартных шаблонов это принципиально разные вещи.
Может из-за этого путаница? В библиотеке STL при использовании vector не используются никакие бинарные объекты - все рождается на этапе компиляции. На то это и шаблоны. Может в boost есть отдельные функции, которые находятся в библиотеке в двоичном виде, но само название STL говорит, что это не более чем набор заголовочных файлов с шаблонами. |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
Я чета не понял.
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нету никакой путаницы. Помоему ты слишком близко к сердцу все это принимаешь... а чего его читать? По существу вопроса достаточно первых 5-6 сообщений. Дальше народ использует возможность блестнуть эрудицией. Так что не мешай... |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
на то и пустое место - было бы что интересного по теме, текло бы нормальное обсуждение |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |