Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 113
#1

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

08.09.2012, 14:59. Просмотров 527. Ответов 6
Метки нет (Все метки)

Собственно неработающий метод:

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 сохранить общее в одном, а затем удалить повторяющейся.
Как это лучше сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 14:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод для прохода по вектору сложного класса определения и удаления не нужных элементов (C++):

Разработать метод-член класса для определения минимального и максимального элементов одномерного динамическо - C++
Помогите!!! разработать метод - член класса для определения минимального и максимального элементов одномерного динамического массива и их...

Сортировка вектора сложного класса (Просто для тех кто знает) - C++
Есть класс: class Tovar { protected: Date_class expiry; string articul, name, catigory,barcode; double price; public: ...

FireBird скрипт для поиска и удаления '-', а затем для растановки его в нужных местах - Firebird/InterBase
Используется FireBird 2.0. Есть поле Варчар(40) . В нём есть номера телефонов в формате хх-ххх-хх-ххх, нужно их превратить в ххх-ххх-хх-хх ...

Реализовать метод, который будет искать пути прохода - Алгоритмы
Нужно реализовать метод который будет искать пути прохода при этом побывать в каждом объекте и не входить два раза в один и тот же. для...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса - C++
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор класса. Вопрос в том, что это такое?

Метод-член класса для создания одномерного массива из отрицательных элементов двумерного динамического массива - C++
Помогите, пожалуйста, нужно разработать метод-член класса для создания одномерного массива из отрицательных элементов двумерного...

6
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.09.2012, 15:52 #2
Цитата Сообщение от tihonya Посмотреть сообщение
this->clear();
а что эта функция делает?

Не по теме:

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

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


alexey31415,очищает весь список
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.09.2012, 16:16 #4
какой список?приведи полный код или ту часть,котрая здесь задействована
0
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 113
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 в элементах которые перемещались указывают на один и тот-же адрес.
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
08.09.2012, 16:54 #6
приведите тогда код,где вы используете sort
0
tihonya
11 / 7 / 1
Регистрация: 30.05.2012
Сообщений: 113
10.09.2012, 01:26  [ТС] #7
Цитата Сообщение от alexey31415 Посмотреть сообщение
приведите тогда код,где вы используете sort
Уже не надо, я переписал класс OfficeTovar, и использовал указательна Data_class.

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

Но у меня времени в ближайшее время на это не будет, для себя просто ситуацию запомню может когда-то протестирую ситуацию.
0
10.09.2012, 01:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2012, 01:26
Привет! Вот еще темы с ответами:

Метод трапеций для определения пути - Delphi
Вот написал прогу, а правильно ли не знаю, проверьте пожалуйста) Решил методом трапеций) Обьект движется по прямой со скоростью...

Составить описание класса для определения одномерных массивов - C++
напишите пжлста програмку:

Написать метод sign для определения знака числа - Java SE
Чувствую себя дебилом. Я смысл задачи не понимаю. А задача такая : Определить значение sign x + sign y. Для решения задачи...

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.