Параметр функции C ++, который принимает только итератор к определенному типуC++

Программы на C++. Форум разработчиков
Anonymous
Параметр функции C ++, который принимает только итератор к определенному типу

Сообщение Anonymous »

Я знаю, что могу использовать шаблон для создания конструктора, который принимает любой тип итератора, как это: < /p>

Код: Выделить всё

struct Thing
{
std::vector integers;
std::list strings;

template 
Thing(InputIt start, InputIt end): integers(start, end) {}
};
< /code>
или, я могу сделать конструкторы, которые принимают конкретный тип итератора контейнеров, которые я использую: < /p>
struct Thing
{
std::vector integers;
std::list strings;

Thing(std::vector::iterator start, std::vector::iterator end): integers(start, end) {}
Thing(std::list::iterator start, std::list::iterator end): strings(start, end) {}
};
Я хотел бы сделать вышеперечисленное, но я не хочу, чтобы итераторы были ограничены определенным типом контейнера.
Я представляю, как некоторые типы Intinputit и StringInputit , которые могут обратиться только к int или std :: String Itreator

Код: Выделить всё

struct Thing
{
std::vector integers;
std::list strings;

Thing(IntInputIt start, IntInputIt end): integers(start, end) {}
Thing(StringInputIt start, StringInputIt end): strings(start, end) {}
};
< /code>
Тогда я мог бы инициализировать свою структуру из любого вида списка: < /p>
std::vector ints1({1,2,3});
std::list ints2({4,5,6});
auto thing1 = Thing(ints1.begin(), ints1.end());
auto thing2 = Thing(ints2.begin(), ints2.end());
Есть ли простой способ достичь моего воображаемого Intinputit и stringInputit ?

Подробнее здесь: https://stackoverflow.com/questions/796 ... cific-type

Вернуться в «C++»