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

Алгоритм unique - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.68
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
14.07.2011, 12:17     Алгоритм unique #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
 
 
int main() {
  list<int> p(5,6);
  
  
  unique(p.begin(),p.end());
  cout << p.size();
 
 
 
  
  return 0;
}
Почему дубликаты из алгоритма unique не удаляются?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2011, 12:17     Алгоритм unique
Посмотрите здесь:

C++ Алгоритм
Волновой алгоритм (алгоритм Ли) C++
алгоритм C++
алгоритм C++
Помогите алгоритм для char переделать в алгоритм для float C++
Алгоритм C++
C++ QR алгоритм
C++ алгоритм бм
Функция unique C++
Функция unique для list C++
Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) C++
Unique: почему не удаляется Point(1,2)? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1427 / 794 / 57
Регистрация: 26.03.2010
Сообщений: 2,737
14.07.2011, 12:23     Алгоритм unique #2
Алгоритм unique возвращает указатель на новый конец контейнера, тут все подробно описано: http://www.cplusplus.com/reference/algorithm/unique/

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
std::list <int> p(5, 6);
std::list <int> :: iterator pend = std::unique(p.begin(), p.end());
 
p.resize(pend - p.begin());
std::cout << p.size();
 
std::cout << std::endl;
std::copy(p.begin(), p.end() /*or pend */, std::ostream_iterator <int> (std::cout, " "));
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.07.2011, 12:27     Алгоритм unique #3
Для этого есть метод у списка, unique.
C++
1
2
list<int> p(5,6);
p.unique();
CAHTEXHUK
Заблокирован
14.07.2011, 12:29     Алгоритм unique #4
The resulting range consists of the elements between first and the iterator returned by the function, which points to the new end of range. The elements past the new end of range are still valid, although with unspecified values

C++
1
2
3
4
for (list<int>::const_iterator it = p.begin(); it != unique(p.begin(),p.end()); it++)
  {
      cout << *it << endl;;
  }
ElvenDragon
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
14.07.2011, 21:05  [ТС]     Алгоритм unique #5
Цитата Сообщение от neske Посмотреть сообщение
Алгоритм unique возвращает указатель на новый конец контейнера, тут все подробно описано: http://www.cplusplus.com/reference/algorithm/unique/

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
std::list <int> p(5, 6);
std::list <int> :: iterator pend = std::unique(p.begin(), p.end());
 
p.resize(pend - p.begin());
std::cout << p.size();
 
std::cout << std::endl;
std::copy(p.begin(), p.end() /*or pend */, std::ostream_iterator <int> (std::cout, " "));
Вот я немного подкоректировал теперь готов алгоритм.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
 
 
int main() {
  int r;
  vector<int> p(5,6);
  p[0] = 12;
  vector<int>::iterator pend = unique(p.begin(), p.end()),u;
  r = pend - p.begin();
  u = pend;
  pend -= r;
  copy(pend,u,p.begin());
  p.resize(r);
  cout << p[0] << ' ' << p[1];
 
  return 0;
}
neske
1427 / 794 / 57
Регистрация: 26.03.2010
Сообщений: 2,737
14.07.2011, 21:59     Алгоритм unique #6
Цитата Сообщение от ElvenDragon Посмотреть сообщение
Вот я немного подкоректировал теперь готов алгоритм.
угу, подкоректировали, непридумали велосипедов)
Yandex
Объявления
14.07.2011, 21:59     Алгоритм unique
Ответ Создать тему
Опции темы

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