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

Удалить повторяющиеся элементы из двух векторов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как проверить есть ли в string что нибудь ? http://www.cyberforum.ru/cpp-beginners/thread960156.html
Как проверить есть ли в string что нибудь ? Например функция для проверки стороки "S".
C++ чето написал в общем не работает пишет ошибку в общем ситуация такова чето написал в общем не работает пишет ошибку где то здесь.... { static timeString; temp = 'l'; temp = 'a'; temp = 'b'; temp = 'l'; temp =... http://www.cyberforum.ru/cpp-beginners/thread960152.html
Определить, является ли символ цифрой C++
предлагает пользователю ввести символ, определяет, является ли он цифрой и выводит предлагает пользователю ввести символ, определяет, является ли он буквой или знаком пунктуации обьяснити...
C++ Посчитать среднее арифметическое всех отрицательных значений функции
Посчитать значение функции y=(x+5)*(4*x)/(x+1)*(x+4) на промежутке с шагом h=0.7. Результат вывести в виде пар х и у. Если искомых данных нет, вывести сообщение об этом. Посчитать среднее...
C++ направьте на путь истинный) перевод систем счисления http://www.cyberforum.ru/cpp-beginners/thread960138.html
прошу помощи. как реализовать перевод из 10 сис.счисления в любую другую(по моему примеру)?вроде бы все должно идти верно.. в кнопке пишу: void __fastcall TForm1::Button1Click(TObject *Sender) {...
C++ Заполнение списка Разъясните, пожалуйста, задание. Не пойму что подразумевается под "список может содержать от 0 до 20 значений (обязательно проверить на длине списка 0, 1. 2, 3, 4, 5, 7, 14)". Написать программу,... подробнее

Показать сообщение отдельно
Paltus
3 / 3 / 0
Регистрация: 18.09.2013
Сообщений: 31

Удалить повторяющиеся элементы из двух векторов - C++

23.09.2013, 03:46. Просмотров 608. Ответов 1
Метки (Все метки)

Доброго времени суток!

Есть два вектора, нужно найти повторяющиеся элементы и удалить их из обоих векторов, оставив только первое вхождение.

Собственно, самостоятельно пришел вот к такому решению (жесть, я понимаю):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    vector<Test>::iterator it;
    vector<Test>::iterator it_2;
    
    bool del = false;
 
    int count = 0;
 
    for (it = test_1.begin(); it != test_1.end(); ){
        
        for (it_2 = test_2.begin(); it_2 != test_2.end();){
            
            if ((*it).x == (*it_2).x && (*it).y == (*it_2).y){
                
                ++count;
                if(count == 1){ ++it_2; continue; } //пропускаем первое вхождение
                else {
                it_2 = test_2.erase(it_2);
                del = true;
 
                }
                
            } else { ++it_2; }
            
        }
 
        if(del){
 
            it = test_1.erase(it);
            del = false;
        
        } else { ++it; } 
 
    }
Но оно мне жутко не нравится (оно и понятно), может кто-нибудь подсказать как это можно сделать проще? А то моя дурья башка, не доходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru