forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   С++ и Блитц Параллели (http://forum.boolean.name/showthread.php?t=15240)

Vadimich 04.08.2011 10:20

С++ и Блитц Параллели
 
Добрый день!
я работал на Blitz3d, а теперь начал изучать С++ и наверное, как и у большинства новичков, много глупых вопросов :)
Насколько я понял, классы в С++ это тоже, что и Типы в ББ. Как мне реализовать следующие моменты на С++, которые в ББ я бы написал так:

---------------------------
o.Object = New Object // создание одного нового экземляра
// допустим, что Тип (Класс) Object был объявлен где-то выше :)
---------------------------
for o.Object = each Object // перебор всех экземпляров 'o' типа Object
// some code
next
---------------------------
// ну и удаление экземпляра
Delete o

Спасибо. буду рад помощи ))

Morganolla 04.08.2011 10:36

Ответ: С++ и Блитц Параллели
 
1. - в С++ тоже есть оператор new.
2. - здесь тебе нужно будет самому либо :
а)сделать массив объектов
б) использовать библиотеку STL (списки или динамические массивы, с итераторами)
в) сделать простейший класс списка с контейнерами.
3. - в С++ тоже есть оператор delete
удачи!

Vadimich 04.08.2011 10:43

Ответ: С++ и Блитц Параллели
 
Дело в том, что учебник я ещё не дочитал. про то что есть new и delete мне известно.. видел, как они подсвечиваются при вводе.. мне интересно, как их использовать в данном случае. может напишешь небольшой примерчик?
массив объектов в данном случае не то... он ведь сразу создает определенное количество экземпляров, а не добавляет новые по необходимости (если я правильно понял эту часть)

SBJoker 04.08.2011 10:44

Ответ: С++ и Блитц Параллели
 
Код:

Object * o = new Object(); // создание одного нового экземляра

// ну и удаление экземпляра
delete(o);
o = 0;

А для перебора нужно сначала создать список и добавить туда элемент.

std::list<Object*> ObjectsList;

ObjectsList.push_back(o);

//перебор
std::list<Object*>::iterator itr;
for (itr = ObjectsList.begin(); itr != ObjectsList.end(); itr++) {
    //some code (*itr) - is element, access by (*itr)->
}

Однако стоит сначала почитать про память в C++. Так как даже этот неполный код таит в себе подводные камни.
Эффективное и безошибочное программирование на с++ без понимания основ управления памятью и механизма указателей невозможно.

Vadimich 04.08.2011 10:49

Ответ: С++ и Блитц Параллели
 
2 SBJoker: большое спасибо!

impersonalis 04.08.2011 12:31

Ответ: С++ и Блитц Параллели
 
Согласен с ДЖокером, от себя ещё добавлю:
В данном случае, не помешает изобрести пару велосипедов. Это позволит понять необходимость и рациональность тех или иных решений в готовых библиотеках.

Morganolla 04.08.2011 19:47

Ответ: С++ и Блитц Параллели
 
Цитата:

Сообщение от Vadimich (Сообщение 197945)
Дело в том, что учебник я ещё не дочитал.

Ничто не мешает использовать учебник как справочник с примерами.
Именно я так и делал - пробежал за недельку весь курс С++. Уяснил всю картину в целом. А потом внимательно изучал нужные разделы по мере необходимости. Кстати какой у тебя учебник?

Джокер, конечно, дал тебе шпаргалку, но чтобы осознано это использовать в полном объеме, придется попотеть дружочек )))

Черный крыс 05.08.2011 22:18

Ответ: С++ и Блитц Параллели
 
Лучше познай как устроен БМакса, с него прыгнуть будет проще

Vadimich 08.08.2011 12:23

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

HolyDel 09.08.2011 00:07

Ответ: С++ и Блитц Параллели
 
мой любимый цикл:
Код:

for(auto ci = somelist.begin(), ei = somelist.end();ci!=ei;++ci)
{
(*ci)->Some(some,some,some);
}


.Squid 09.08.2011 01:03

Ответ: С++ и Блитц Параллели
 
Ты уже на C++0x пишешь?

Mr_F_ 09.08.2011 13:23

Ответ: С++ и Блитц Параллели
 

Цитата:

мой любимый цикл:
никогда не запомню эту мутотень с итераторами.
по мне так for(int i=0;i<somelist.size();i++) куда интуитивнее.

.Squid 09.08.2011 13:26

Ответ: С++ и Блитц Параллели
 
Цитата:

Сообщение от Mr_F_ (Сообщение 198489)
никогда не запомню эту мутотень с итераторами.
по мне так for(int i=0;i<somelist.size();i++) куда интуитивнее.

Желаю удачи в удалении какого-то элемента из середины списка в таком цикле.

Mr_F_ 09.08.2011 13:49

Ответ: С++ и Блитц Параллели
 

Цитата:

Желаю удачи в удалении какого-то элемента из середины списка в таком цикле.
somelist.erase(somelist.begin()+i);
i--;

.Squid 09.08.2011 13:54

Ответ: С++ и Блитц Параллели
 
Цитата:

Сообщение от Mr_F_ (Сообщение 198496)

somelist.erase(somelist.begin()+i);
i--;




Часовой пояс GMT +4, время: 15:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot