Форум программистов, компьютерный форум CyberForum.ru

Метод для прохода по вектору сложного класса определения и удаления не нужных элементов - C++

Восстановить пароль Регистрация
 
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
08.09.2012, 14:59     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #1
Собственно неработающий метод:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void OfficeTovarCollection::plusifneed(){
        vector<OfficeTovar>:: iterator it1=begin();
        vector<OfficeTovar>:: iterator it2=begin()+1;
        while(it2!=end())
        {
            if((*it1._Ptr==*it2._Ptr)&&(it1._Ptr->getExpiry().getData()->tm_mon==it2._Ptr->getExpiry().getData()->tm_mon)
                &&(it1._Ptr->getExpiry().getData()->tm_year==it2._Ptr->getExpiry().getData()->tm_year)){
 
                    it1->setPcs(it1->getPcs()+it2->getPcs());
 
//                  this->clear();  
//                  this->erase(it2);
                    //it2++;
            }
            else
            {
                it1=it2;
                it2++;
            }
 
        }
    }
Ошибка вылетает на clear(я знаю что удаляет все) и erase типо ошибка доступа. OfficeTovarCollection - наследник класса vector<OfficeTovar>.
класс OfficeTovar аналог товара здесь: Сортировка вектора сложного класса (Просто для тех кто знает)

Что может быть не так? В этом методе я должен пройтись по отсортированному вектору <OfficeTovar>, сложить значения (инт) Pcs в одинаковых экземплярах OfficeTovar сохранить общее в одном, а затем удалить повторяющейся.
Как это лучше сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 14:59     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов
Посмотрите здесь:

Описание класса для определения одномерных массивов строк фиксированной длины C++
Сортировка вектора сложного класса (Просто для тех кто знает) C++
C++ Составить описание класса для определения одномерных массивов
C++ Составить описание класса для определения квадратных матриц целых чисел
Создать файл для определения класса рациональных чисел с перегрузкой операторов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.09.2012, 15:52     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #2
Цитата Сообщение от tihonya Посмотреть сообщение
this->clear();
а что эта функция делает?

Не по теме:

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
08.09.2012, 15:56  [ТС]     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #3
Я понял это как раз Ошибка вылетает после использования алгоритма sort.


alexey31415,очищает весь список
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.09.2012, 16:16     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #4
какой список?приведи полный код или ту часть,котрая здесь задействована
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
08.09.2012, 16:32  [ТС]     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #5
Цитата Сообщение от alexey31415 Посмотреть сообщение
какой список?приведи полный код или ту часть,котрая здесь задействована
Какой полный код у меня 30 файлов кода.. ладно.....
Я здесь выясняю. Проблема в том что после функции sort (из алгоритмов STL) которую я делал здесь: http://www.cyberforum.ru/cpp-beginne...ml#post3428833 в классе Tovar (OfficeTovar полный аналог) есть класс Data_class в нем указатель на структуру tm (время) так вот после сортировки все поля этой структуры равны -17891602, С конструктором копирования все в порядке (вроде) чего оно так?? ума не приложу, кстати все указатели структуры tm в элементах которые перемещались указывают на один и тот-же адрес.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.09.2012, 16:54     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #6
приведите тогда код,где вы используете sort
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2012, 01:26     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов
Еще ссылки по теме:

Описание класса для определения одномерных массивов строк. Исправить ошибку C++
C++ Как передать в метод класса Menu указатель на метод дочернего класса?
Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 107
10.09.2012, 01:26  [ТС]     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов #7
Цитата Сообщение от alexey31415 Посмотреть сообщение
приведите тогда код,где вы используете sort
Уже не надо, я переписал класс OfficeTovar, и использовал указательна Data_class.

Кстати можно проверить, возможно ошибка будет всегда, если сортировать вектор класса T в котором есть класс D в котором есть указатель на структуру или возможно класс. ....

Но у меня времени в ближайшее время на это не будет, для себя просто ситуацию запомню может когда-то протестирую ситуацию.
Yandex
Объявления
10.09.2012, 01:26     Метод для прохода по вектору сложного класса определения и удаления не нужных элементов
Ответ Создать тему
Опции темы

Текущее время: 21:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru