Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2009, 13:14   #1
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 78
По умолчанию MFC CPtrArray

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

Есть код

Код:
CPtrArray term; term. SetSize(5,10);

for( int it=0; it < terms->GetSize(); it++ )
{
	CStringArray* opers = (CStringArray*)terms->GetAt(it);

	for( int io=0; io < opers->GetSize(); io++ )
	{
		CString code = opers->GetAt(io);
		ZFTATreeEvent* event = getEvent(code);
										term->Add( event ); ///!!!!
	}

	if( term->getOperandsCount() > 0 ) add( term );
}
Оператор term->add( event ); ///!!!!
выполняется порядка 2000 раз.
Без этого оператора программа бежит меньше секунда.
С этим оператором болшьше 5 минут.

Что это может быть?
Спасибо.

Последний раз редактировалось MaTBeu; 08.05.2009 в 20:12.
ezus вне форума Ответить с цитированием
Старый 08.05.2009, 14:46   #2
Pashan
Пользователь
 
Регистрация: 18.03.2009
Сообщений: 89
По умолчанию

А это полная программа или нет?

А то там используется terms->GetAt(it), а перед этим делается только SetSize(5,10), но элементы не задаются.

А вообще, напиши полную идею происходящего. А то пара моментов вызывает подозрения.
Pashan вне форума Ответить с цитированием
Старый 10.05.2009, 11:38   #3
ezus
Пользователь
 
Регистрация: 08.05.2009
Сообщений: 78
По умолчанию

Конечно, это маленький фрагмент, причем покоцанный.
Идея:
Есть алгебраическое выражение, состоящее из термов, состоящих из операндов. Оно храниться на диске в виде флат-файла.
Мне надо загрузить его в структуру типа:
Код:
CPtrArray exprs:  // ptr = new ClassExpr;
ClassExpr содержит
CPtrArray terms:  // ptr = new ClassTerm;
ClassTerm содержит
CPtrArray opers:  // ptr = new ClassOper;
term-ов может быть 100.000 и более.
В одном терме до 20 операторов, больше всречается редко, но встречается. Чаще от 3 до 7.

Будем считать, что проблем с exprs.Add(e) и exprs.terms(t) нет.

Проблема с opers.Add(op)

Последний раз редактировалось MaTBeu; 10.05.2009 в 16:27.
ezus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MFC Cdevelop Visual C++ 4 18.03.2009 21:28
MFC: ListBox umnick Visual C++ 2 29.10.2008 22:28
MFC и e-mail alixEx Visual C++ 2 13.05.2008 01:07
нету MFC ??? Diman2008 Общие вопросы .NET 2 22.03.2008 21:56
MFC Diman2008 Visual C++ 2 06.03.2008 16:24