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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.68
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
#1

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

14.07.2011, 12:17. Просмотров 5417. Ответов 5
Метки нет (Все метки)

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

Функция unique - C++
#include&lt;iostream&gt; #include&lt;algorithm&gt; #include&lt;string&gt; #include&lt;vector&gt; #include&lt;conio.h&gt; #include &lt;fstream&gt; using namespace...

Функция unique для list - C++
Взято отсюда. The second version (2), takes as argument a specific comparison function that determine the &quot;uniqueness&quot; of an element. In...

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

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab () { int s1 = 0; int s2 =...

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

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар) - C++
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...

5
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,967
14.07.2011, 12:23 #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, " "));
1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.07.2011, 12:27 #3
Для этого есть метод у списка, unique.
C++
1
2
list<int> p(5,6);
p.unique();
0
CAHTEXHUK
Заблокирован
14.07.2011, 12:29 #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;;
  }
0
ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
14.07.2011, 21:05  [ТС] #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;
}
0
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,967
14.07.2011, 21:59 #6
Цитата Сообщение от ElvenDragon Посмотреть сообщение
Вот я немного подкоректировал теперь готов алгоритм.
угу, подкоректировали, непридумали велосипедов)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2011, 21:59
Привет! Вот еще темы с ответами:

Помогите алгоритм для char переделать в алгоритм для float - C++
char* DecToBin(char x, char* str) { int i; for (i = sizeof(x)*8-1; i&gt;=0; i--) { str = (x&amp;1 == 1) ? '1' : '0'; x = x &gt;&gt;...

Волновой алгоритм (алгоритм Ли) - C++
Здравствуйте! У кого-нибудь есть реализованный волновой алгоритм (алгоритм Ли) ? Дело в том, что я игрушку захотел написать (что-то...

Unique records - Базы данных
Доброго утра всем. Как выбрать из таблицы только уникальные записи? Т.е. неповторяющиеся значения. Стандартной встроенной функцией не...

Name not unique in this context - C++ Builder БД
Проблема такого характера. На первой форме реализована работа не сложной базы данных в виде ежедневника, при активации этой формы выдается...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
14.07.2011, 21:59
Ответ Создать тему
Опции темы

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