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

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

Войти
Регистрация
Восстановить пароль
 
FortranDLL
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 94
#1

Функция unique для list - C++

13.01.2016, 13:31. Просмотров 230. Ответов 2
Метки нет (Все метки)

Взято отсюда.
The second version (2), takes as argument a specific comparison function that determine the "uniqueness" of an element. In fact, any behavior can be implemented (and not only an equality comparison), but notice that the function will call binary_pred(*i,*(i-1)) for all pairs of elements (where i is an iterator to an element, starting from the second) and remove i from the list if the predicate returns true.

Так а что делать если нужно все-таки удалить i-1?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 13:31     Функция unique для list
Посмотрите здесь:

Функция unique - C++
#include<iostream> #include<algorithm> #include<string> #include<vector> #include<conio.h> #include <fstream> using namespace...

Функция insert для list - C++
Задание: С помощью функции insert заполнить первый список элементами ранее созданного и проинициализированного массива, состоящего из 3...

Функция вставки в list - C++
Вставить элемент Е после каждого элемента списка, превышающего некоторое значение Р. #include <iostream> #include <list> using...

Контейнеры (функция, которая бы помогла отсортировать контейнер List) - C++
составить булевскую функцию, которая бы помогла отсортировать контейнер List. контейнер содержит элементы типа string. я эту функцию...

STL list. Какая функция ищет указатель на элемент равный а ? - C++
Есть список с элементами - объектами класса А. В классе А описан operator== (он нестандартный). Вопрос, какая функция будет искать в...

Как минимально просто использовать функция std::find с последовательность типа : list<myClass*> - C++
Добрый день. Как минимально просто использовать функция std::find с последовательность типа : list&lt;myClass*&gt;,если в классе перегружен...

Алгоритм unique - C++
#include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;list&gt; using namespace std; int main() { list&lt;int&gt;...

Unique: почему не удаляется Point(1,2)? - C++
Добрый вечер, почему не удаляется Point(1,2) ? %-) #include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;vector&gt; #include...

Обертка для list - C++
Есть следующая иерархия классов: class A {}; class B : public A {}; class C : public A {}; class D : public C {}; Я...

Remove_if для std::list - C++
Здравствуйте! Помогите мне разобраться,пожалуйста.Перечитал кучу всего,но так и не понял ,что можно писать в аргументе метода remove_if. ...

Перегрузка операторов для list - C++
Как перегрузить операторы вывода в поток и доступа по индексу для list?

Перегрузить оператор << для структуры List - C++
В общем пытаюсь перегрузить оператор передачи в поток для структуры, но что-то видимо делаю не так. Вопрос : что? #include &quot;stdafx.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GbaLog-
Любитель чаепитий
2621 / 1160 / 284
Регистрация: 24.08.2014
Сообщений: 4,242
Записей в блоге: 1
Завершенные тесты: 2
13.01.2016, 13:38     Функция unique для list #2
FortranDLL,
unique для list
с.unique();
Удаляет дубликаты последовательных элементов,
имеющих одинаковые значения
Что такое i-1? Итератор?

Добавлено через 2 минуты
Если да, то можно, например, --i вызвать. В двусвязном списке он, вроде бы, предусмотрен.
FortranDLL
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 94
13.01.2016, 13:46  [ТС]     Функция unique для list #3
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
34
35
36
37
38
39
// list::unique
#include <iostream>
#include <cmath>
#include <list>
 
// a binary predicate implemented as a function:
bool same_integral_part (double first, double second)
{ return ( int(first)==int(second) ); }
 
// a binary predicate implemented as a class:
struct is_near {
  bool operator() (double first, double second)
  { return (first-second<5.0); }
};
 
int main ()
{
  double mydoubles[]={ 12.15,  2.72, 73.0,  12.77,  3.14,
                       12.77, 73.35, 72.25, 15.3,  72.25 };
  std::list<double> mylist (mydoubles,mydoubles+10);
  
  mylist.sort();             //  2.72,  3.14, 12.15, 12.77, 12.77,
                             // 15.3,  72.25, 72.25, 73.0,  73.35
 
  mylist.unique();           //  2.72,  3.14, 12.15, 12.77
                             // 15.3,  72.25, 73.0,  73.35
 
  mylist.unique (same_integral_part);  //  2.72,  3.14, 12.15
                                       // 15.3,  72.25, 73.0
 
  mylist.unique (is_near());           //  2.72, 12.15, 72.25
 
  std::cout << "mylist contains:";
  for (std::list<double>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';
 
  return 0;
}
А можете пояснить на примере структуры is_near как это можно реализовать?
Ответ Создать тему
Опции темы

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