Проблема при копировании с помощью copy()
Объявление:
copy(it, it, back_inserter(sell_medic));
Где it:
list<Medicine>::iterator it = medic.begin();
advance(it, id - 1);
Метод вообще не копирует в нужный list <Medicine> sell_medic;
В алгоритмах стандартной библиотеки пара итераторов представляет диапазон - [begin, end[ (end указывает на элемент за последним), поэтому диапазон it, it будет всегда представлять пустое множество. Если вы хотели скопировать с начала до it (но не включая элемент, на который it указывает) то код должен быть:
copy(medic.begin(), it, back_inserter(sell_medic));
А если мне надо скопировать конкретный элемент, на который указывает этот итератор?
Тогда вам вообще не нужен std::copy:
sell_medic.push_back( *it );
но если сильно хочется:
std::copy(it, std::next(it), std::back_inserter(sell_medic));
ЗЫ этот код излишне многословен:
list<Medicine>::iterator it = medic.begin();
advance(it, id - 1);
проще написать так:
auto it = std::next( medic.begin(), id - 1 );
так и проще читать и короче std::next()
Если вам так уж хочется использовать стандартный алгоритм, то можно так:
copy_n(it, 1, back_inserter(sell_medic));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости