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

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

Войти
Регистрация
Восстановить пароль
 
virtus
19 / 19 / 7
Регистрация: 23.09.2013
Сообщений: 327
#1

Создание специализации шаблонной функции и задача на std::vector - C++

22.11.2013, 10:40. Просмотров 563. Ответов 9
Метки нет (Все метки)

Здравствуйте,


подскажите, пожалуйста:
1.В чем ошибка объявления специализации шаблонной функции в header.h
C++
1
2
3
4
5
template <typename T> void VectInfo(const std::vector<T>& ref){
}
 
 
template <> void VectInfo(const Point*&  ref); - здесь ошибка (no instance of function template "VectInfo" matches the specified type)

2. Для vector<char> vChar удалить повторяющиеся последовательности символов.
Например, из "aabbbc" оставить "с".

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 10:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание специализации шаблонной функции и задача на std::vector (C++):

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Передача функции указатель на элемент std::vector<std::string> - C++
Доброй ночи тем, кому не спится (или живет в другом часовом поясе:p)! Есть функция, требующая в качестве параметра указатель на...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? - C++
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

Как изменять размер std::vector<std::vector>? - C++
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

Вывести значения std::vector<std::vector<int*> > - C++
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3; std::vector&lt;std::vector&lt;int*&gt; &gt; imatrix; //...

Создание шаблонной функции - C++
Создать шаблонную функцию, изменяющий порядок элементов таким образом: первая половина списка смещается в конец, а вторая в начало. К...

9
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
22.11.2013, 10:47 #2
Цитата Сообщение от virtus Посмотреть сообщение
1.В чем ошибка объявления специализации шаблонной функции в header.h
В том, что тип паметра другой (не const std::vector<> &). Вообще специализация шаблона функции сама по себе довольно бесполезна, попробуй перегрузку.
1
virtus
19 / 19 / 7
Регистрация: 23.09.2013
Сообщений: 327
22.11.2013, 11:54  [ТС] #3
Точно! Спасибо!
И как не заметил. Нужно было писать так:
C++
1
template <> void VectInfo(const std::vector<Point*>&  ref){};
А на счет удаления повторяющихся последовательностей символов из vector есть идеи?
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
22.11.2013, 12:16 #4
virtus, Именно последовательностей?
C++
1
2
std::vector<Point*>::const_iterator new_end = std::unique(ref.begin(), ref.end());
// now range (begin, new_end] contains only unique elements
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
22.11.2013, 12:36 #5
ForEveR, как то не стыкуется с
Цитата Сообщение от virtus Посмотреть сообщение
Например, из "aabbbc" оставить "с".
1
virtus
19 / 19 / 7
Регистрация: 23.09.2013
Сообщений: 327
22.11.2013, 12:41  [ТС] #6
Да, например:

Для std::vector<char> vChar, проинициализированным как "abbbc" нужно получить "ac";
либо для "aasbb" нужно получить "s";
0
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
22.11.2013, 12:59 #7
gray_fox, А. Вот оно че. Ну тогда согласен, не читал первое сообщение.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
22.11.2013, 14:42 #8
В лоб:
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <string>
 
int main() 
{
    std::string s = "abbbbcdcwxxx121";  
 
    for( auto it = std::begin(s); it != std::end(s); )
    {
        const char c = *it;
        if( std::count( std::begin(s), std::end(s), c ) > 1 )
        {
            auto pos = std::remove( std::begin(s), std::end(s), c );
            s.erase( pos, std::end(s) );
        } 
        else
        {
            ++it;
        }
    }
    
    std::cout << s << std::endl;
    
    return 0;
}
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
22.11.2013, 15:12 #9
Цитата Сообщение от virtus Посмотреть сообщение
А на счет удаления повторяющихся последовательностей символов из vector есть идеи?
ммм... ну вот, смахивает на говнокод, но вроде работает)
Кликните здесь для просмотра всего текста
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
#include <iterator>
 
 
template<typename Container>
Container unique_only_copy(Container container) {
  auto       first  = std::begin(container); 
  auto const last   = std::end(container);
  
  if (first != last) {
     auto second = std::next(first);
     
     if (second != last) {
        auto result = first;
     
        do {
           if (*first == *second) {
              while (++second != last && *first == *second);
              
              if (second == last) {
                 break;
              }
              
              first = second;
           } else {
              *result++ = *first++;
           }
           
           if (++second == last) {
              *result++ = *first;
           }
        } while (second != last);
        
        container.erase(result, last);
     }
  }
  
  return container;
}
http://ideone.com/ijkgGd
1
virtus
19 / 19 / 7
Регистрация: 23.09.2013
Сообщений: 327
25.11.2013, 09:58  [ТС] #10
Спасибо. Буду тестить.
0
25.11.2013, 09:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2013, 09:58
Привет! Вот еще темы с ответами:

Непонятные функции std::vector - C++
Здорова господа! Тут я решил своими словами описать стандартные контейнеры их всего 14. Решил описать с примерчиками возможности каждого...

std::vector, классы и функции. - C++
Цель сделать вектор класса. Но в классе должен быть вектор. Обращения к элементам выглядит так, а как работать с вектором? #include...

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator> - C++
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я ставлю закладку итератора, ...

Создание шаблонной функции сортировки с предикатом - C++
MrGluck, Более менее проясняется. Но мне нельзя пользоваться функциями из библиотек. Нужно написать что то аналогичное std::sort и уже в...


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

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

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