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

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

Восстановить пароль Регистрация
 
FortranDLL
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 94
13.01.2016, 13:31     Функция unique для list #1
Взято отсюда.
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
Посмотрите здесь:

C++ STL list. Какая функция ищет указатель на элемент равный а ?
Алгоритм unique C++
Контейнеры (функция, которая бы помогла отсортировать контейнер List) C++
Функция вставки в list C++
Как минимально просто использовать функция std::find с последовательность типа : list<myClass*> C++
Функция insert для list C++
Функция unique C++
Записать в файл list (очередь) объектов, в которых содержатся строки string, и считать с файла обратно в list C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GbaLog-
Не Эксперт C++
1430 / 616 / 173
Регистрация: 24.08.2014
Сообщений: 2,495
Записей в блоге: 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 как это можно реализовать?
Yandex
Объявления
13.01.2016, 13:46     Функция unique для list
Ответ Создать тему
Опции темы

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