Параметр функции 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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