В функцию передаётся итератор и количество байт, которое необходимо скопировать в динамический массив к которому есть доступ через unique_ptr. Как мне правильно произвести вызов std::copy и std::memcpy в этом случае?
void Foo(std::iterator<std::input_iterator_tag, uint8_t> iter, int32_t length) {
unique_ptr<char[]> container = make_unique<char[]>(100);
std::copy (iter, iter + length, container); // Как скопировать содержимое iter в container
std::memcpy (container, iter , length); // Как скопировать содержимое iter в container
for (int i = 0; i < length; i++) cout << container[i];
};
Ответ для такого кода - никак.
Дело в том, что std::iterator
- просто предоставляет псевдонимы iterator_category
, value_type
, difference_type
, pointer
, reference
, причем обязательно передать только первые два параметра для определения iterator_category
и value_type
, остальные псевдонимы для типов будут сделаны на их основе, конечно, если Вам они подойдут. std::iterator
не предоставляет никакого функционала, т.е. ни operator*
, ни operator++
, и т.д. у него нет, поэтому использовать его так, как Вы хотите не получится.
Его можно использовать, например, для реализации своего итератора:
class MyIterator:
public std::iterator<std::input_iterator_tag, MyType>
//Наследуемся от std::iterator с нужными аргументами,
//чтобы псевдонимы сами сгенерировались.
Стоит заметить, что std::iterator
, начиная с C++17
является устаревшим.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу класс работающий с трафиком RS485 портаПри открытии порта я указываю функцию, вызываемую при наличии во входном буфере порта каких-то...
Так как это должно быть приложение, то там должна быть функция int main(){}Возможно, ее роль выполняет функция go
Доброго времени, сутокМне надо надо написать функцию которую можно будет вызывать в Python 3