Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Bolonat от Август 10, 2017, 12:30



Название: Изменение элементов контейнеров
Отправлено: Bolonat от Август 10, 2017, 12:30
   Читаю текстовый файл. Каждая строка файла содержит некоторые значения через запятую. N-ое значение относится к n-му каналу. Надо разнести значения по каналам.
         
Код:
QStringList lWordsList = row.split ( ",", QString::SkipEmptyParts );
           for(int j=0;j<lWordsList.size();j++)
           {
                   CChannel ch=(CChannel)channelList[j] ;//Здесь создается копия элемента CChannel
                   double val=lWordsList[j].toDouble();
                   ch.valueList.insert(dt,val);
                   channelList[j]=ch;//пытаюсь внести изменения в список и здесь программа начинает дико тормозить
           }
   row - очередная строка из файла. QMap<int, CChannel> channelList - список каналов CChannel. У CChannel есть список значений QMap <QDateTime, double> valueList. Когда пишу
 
Код:
CChannel ch=(CChannel)channelList[j];
   оказывается создается копия  элемента CChannel, и все, что я делаю с этой копией никак не влияет на реальный элемент  в списке каналов channelList. Поэтому после всех изменений копии, присваиваю ее j-му  элементу списка. Все вроде работает, но проблема в том, что на операторе 
Код:
channelList[j]=ch;

программа начинает дико тормозить. Без этого оператора 10-мегабайтный файл считывается за 3 сек, с этим оператором - счет идет на часы. Как решить проблему? Как внести изменения в элемент напрямую? Или что-то еще?
             


Название: Re: Изменение элементов контейнеров
Отправлено: Igors от Август 10, 2017, 12:41
CChannel & ch = ..


Название: Re: Изменение элементов контейнеров
Отправлено: Bolonat от Август 10, 2017, 12:48
CChannel & ch = ..
Спасибо! :)