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

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

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

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

13.01.2016, 13:31. Просмотров 260. Ответов 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?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 13:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция unique для list (C++):

Функция 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;,если в классе перегружен...

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

Добавлено через 2 минуты
Если да, то можно, например, --i вызвать. В двусвязном списке он, вроде бы, предусмотрен.
1
FortranDLL
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 94
13.01.2016, 13:46  [ТС] #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 как это можно реализовать?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2016, 13:46
Привет! Вот еще темы с ответами:

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

Unique ptr в классе - C++
Добрый вечер, есть ли реальное решение придерживаться правилу нуля и иметь в классе std::unique_ptr ?

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

Ошибка при компиляции undefined reference to `List<int>::List()'| - C++
Доброго времени суток=) столкнулась с такой проблемой нужно написать шаблон класса. При компиляции выдает ошибку undefined reference to...


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

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

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