1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 11
1

Как принять параметр-итератор в шаблоне функции?

09.05.2019, 15:24. Показов 909. Ответов 4
Метки нет (Все метки)

Добрый день, знатоки! Чтобы набить руку, затеял наследование от класса std::vector.

C++
1
template <typename T> class MyVector : public vector <T> {...};
Справился со всеми конструкторами, кроме одного. Как реализовать:

C++
1
2
int arr[3] {1,2,3};
MyVector <int> vi (begin (arr), end (arr));
Застрял на смутной идее:

C++
1
2
MyVector (typename iterator <T*> ini, typename iterator <T*> fin)
: vector <T> (ini, fin) {}
Компилятор MS VisualStudio 2015 такое решение не принимает. Хотя std::vector принимает begin(arr) и end(arr);
Без конструктора с итераторами тоже не получается. Как сделать правильно?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2019, 15:24
Ответы с готовыми решениями:

Принять в параметр функции строку и вернуть ее же,но измененную
Здравствуйте!Такая проблема:есть функция,принимающая в качестве аргумента строку и,проведя...

Непонятный параметр в шаблоне функции
День добрый! Приведу пример шаблона функции: template &lt;typename T1&gt; void func(const T1 &amp;val =...

Как принять параметр открываемой формы ?
Из документа открываю внешнюю обработку и передаю в нее параметра для последующего отбора. Надеюсь...

итератор в классе-шаблоне
template&lt;class T&gt; class m_vector: public vector&lt;T&gt; { public: T at(int i); m_vector(){}...

4
3653 / 2990 / 828
Регистрация: 25.03.2012
Сообщений: 11,028
Записей в блоге: 1
09.05.2019, 15:36 2
C++
1
2
template <typename iterator>
    MyVector(iterator First, iterator Last) :vector<T>(First, Last) {}
1
16085 / 8686 / 2121
Регистрация: 30.01.2014
Сообщений: 14,972
09.05.2019, 15:39 3
del
1
Эксперт С++
8719 / 4262 / 950
Регистрация: 15.11.2014
Сообщений: 9,669
09.05.2019, 15:53 4
Цитата Сообщение от RostKudr Посмотреть сообщение
Справился со всеми конструкторами, кроме одного.
не надо так делать.

нужно просто унаследовать сразу все конструкторы,
и не мучаться.

https://rextester.com/WNO72646

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
 
template <typename T> class MyVector : public std::vector<T> 
{
    using base = std::vector<T>;
public:
    using base::base;
};
 
int main()
{
    MyVector<int> vec1 = {1,2,3,4};
    
    MyVector<int> vec2(vec1.cbegin(), vec1.cend());
    
    for(const auto& el: vec2)
        std::cout << el << ", ";
    std::cout << '\n';
}
output:
Код
1, 2, 3, 4,
0
1 / 1 / 0
Регистрация: 13.12.2010
Сообщений: 11
09.05.2019, 16:01  [ТС] 5
Спасибо. Оба ответа одинаково полезны.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2019, 16:01
Помогаю со студенческими работами здесь

Как передать итератор в качестве параметра функции?
хочу вызвать функцию как-то так: show_string(std::cout, line.begin(), line.end()); в качестве...

Как принять и возвратить массив в другой функции?
пример: прототип функции ??? int main() { создаём функцию которая задаёт массив b ...

Как принять в функции main неопределенное количество параметров?
Добрый день) Нужно что бы функция main принимала от одного до трех параметров в виде маcсива...

Как можно получить итератор на элемент обрабатываемый в лямбде в функции for_each?STL
Как можно получить итератор на элемент обрабатываемый в лямбде? for_each(arr.begin(), arr.end(),...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru