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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

back_inserter() - C++

30.07.2013, 03:22. Просмотров 1896. Ответов 3
Метки нет (Все метки)

Здорова!
Пытаюсь написать свой back_inserter, но что то ничего не получается вот код
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 <iostream>
using std::cout;
using std::endl;
#include <algorithm>
using std::copy;
#include <iterator>
using std::back_inserter;
#include <vector>
using std::vector;
#include <string>
using std::string;
#include <cstdlib>
using std::exit;
 
template<typename Cont>
typename Cont::iterator back_inserter1(Cont& v)
{
    //v.resize(v.size()+1);
    typename Cont::iterator it;
    v.push_back('k');
    it=v.begin();
    it=it+v.size()-1;
    //exit(1);
    return it;
}
 
int main()
{
    string s("hellow world");
    string rez;
//  cout <<*back_inserter1(rez)<<endl;
 
    copy(s.begin(),s.end(),back_inserter1(rez));
 
    cout <<rez<<endl;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 03:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос back_inserter() (C++):

Работа с back_inserter(); - C++
Почему в алгоритме copy() я не могу использовать back_inserter()? #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; ...

Istream_iterator back_inserter - C++
привет всем ! есть такой код vector&lt;int&gt; vec; copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), (vec)); for(int i =...

Алгоритм copy, back_inserter и vector - C++
Здравствуйте. Решил подробней пройтись по STL. Заинтересовал такой момент. Применяю алгоритм copy к вектору и копирую его элементы в самого...

Error C3861: back_inserter: идентификатор не найден - C++
Почему ошибка? Все заголовочные файлы подключил. #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;string&gt; #include &lt;vector&gt; ...

Работа с back_inserter(); - C++
Почему в алгоритме copy() я не могу использовать back_inserter()? #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; ...

Istream_iterator back_inserter - C++
привет всем ! есть такой код vector&lt;int&gt; vec; copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), (vec)); for(int i =...

Алгоритм copy, back_inserter и vector - C++
Здравствуйте. Решил подробней пройтись по STL. Заинтересовал такой момент. Применяю алгоритм copy к вектору и копирую его элементы в самого...

Error C3861: back_inserter: идентификатор не найден - C++
Почему ошибка? Все заголовочные файлы подключил. #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;string&gt; #include &lt;vector&gt; ...

Работа с back_inserter(); - C++
Почему в алгоритме copy() я не могу использовать back_inserter()? #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; ...

Istream_iterator back_inserter - C++
привет всем ! есть такой код vector&lt;int&gt; vec; copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), (vec)); for(int i =...

Алгоритм copy, back_inserter и vector - C++
Здравствуйте. Решил подробней пройтись по STL. Заинтересовал такой момент. Применяю алгоритм copy к вектору и копирую его элементы в самого...

Error C3861: back_inserter: идентификатор не найден - C++
Почему ошибка? Все заголовочные файлы подключил. #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;string&gt; #include &lt;vector&gt; ...

Работа с back_inserter(); - C++
Почему в алгоритме copy() я не могу использовать back_inserter()? #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; ...

Istream_iterator back_inserter - C++
привет всем ! есть такой код vector&lt;int&gt; vec; copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), (vec)); for(int i =...

Алгоритм copy, back_inserter и vector - C++
Здравствуйте. Решил подробней пройтись по STL. Заинтересовал такой момент. Применяю алгоритм copy к вектору и копирую его элементы в самого...

Работа с back_inserter(); - C++
Почему в алгоритме copy() я не могу использовать back_inserter()? #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;vector&gt; ...

Istream_iterator back_inserter - C++
привет всем ! есть такой код vector&lt;int&gt; vec; copy(istream_iterator&lt;int&gt;(cin), istream_iterator&lt;int&gt;(), (vec)); for(int i =...

Алгоритм copy, back_inserter и vector - C++
Здравствуйте. Решил подробней пройтись по STL. Заинтересовал такой момент. Применяю алгоритм copy к вектору и копирую его элементы в самого...

Error C3861: back_inserter: идентификатор не найден - C++
Почему ошибка? Все заголовочные файлы подключил. #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;string&gt; #include &lt;vector&gt; ...


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

Или воспользуйтесь поиском по форуму:
3
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
30.07.2013, 03:34 #2
ninja2, для справки, back_inserter возвращает back_insert_iterator, который, собственно, и выполняет container.push_back(value) (внутри operator =).
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
30.07.2013, 04:25  [ТС] #3
Цитата Сообщение от gray_fox Посмотреть сообщение
back_insert_iterator
Так что это мне нужно наследование сделать от back_insert_iterator?

Добавлено через 2 минуты
Перепутал это ж функция просто в шаблоне по умолчанию тип щас попробую определить.
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
30.07.2013, 04:54 #4
тщательно не проверял
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
 
template <class Container>
class back_insert_iterator : public std::iterator<std::output_iterator_tag,
                                                  void, void, void, void>
{
    Container &container;
public:
    explicit back_insert_iterator(Container &c) noexcept : container(c) {}
 
    back_insert_iterator(const back_insert_iterator&) = default;
    back_insert_iterator(back_insert_iterator&&) = default;
    ~back_insert_iterator() = default;
 
    back_insert_iterator& operator * () noexcept
    {
        return *this;
    }
 
    back_insert_iterator& operator = (const typename Container::value_type &x)
    {
        container.push_back( x );
        return *this;
    }
 
    back_insert_iterator& operator = (typename Container::value_type &&x)
    {
        container.push_back( std::move(x) );
        return *this;
    }
 
    back_insert_iterator& operator ++ () noexcept
    {
        return *this;
    }
 
    back_insert_iterator& operator ++ (int) noexcept
    {
        return *this;
    }
};
 
template <class Container>
back_insert_iterator<Container> back_inserter(Container &c)
{
    return back_insert_iterator<Container>(c);
}
 
int main()
{
    std::vector<std::string> v;
    using iis = std::istream_iterator<std::string>;
    std::copy( iis(std::cin),
               iis(), ::back_inserter<std::vector<std::string>>(v) );
    std::cout << "You entered:\n";
    for (auto &str : v)
        std::cout << str << std::endl;
    return 0;
}
1
30.07.2013, 04:54
Ответ Создать тему
Опции темы

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