У меня есть итератор вставки и итератор к элементу, который я хочу вставить, но мне не разрешено использовать std::copy
.
Это то, что я нашел на странице c++:
std::copy (bar.begin(),bar.end(),insert_it);
Это то, что я хочу сделать, но я не могу использовать std::copy
. Есть ли другой способ?
auto first = bar.begin();
auto last = bar.end();
while (first!=last)
{
*insert_it = *first;
++insert_it;
++first;
}
Предоставляемый вами код перемещает содержимое с bar.begin() в bar.end() в итератор вставки. Я смущен тем термином, который вы использовали insert
и std::copy
не будет вставлять ничего, просто скопируйте контент.
Чтобы на самом деле вставить элементы в контейнер, вы можете использовать это:
your_container.insert(insert_it, bar.begin(),bar.end());
Здесь вы можете найти пример для std::vector
http://en.cppreference.com/w/cpp/container/vector/insert/insert/
Надеюсь, это поможет, Раксван.
copy
пишет в «итератор». Назначением может быть любой изменяемый тип итератора, включая OutputIterator. Итератор вставки вставляет. (Если у него есть доступ к контейнеру, ваше предложение лучше, но он сказал, что у него есть итератор вставки, а не контейнер.)
std::copy
, не совсем ясно, что именно этого действительно хочет спрашивающий, и я думаю, что ответ должен содержать некоторое объяснение. (Я иногда виновен в простом сбрасывании кода, но я делаю это как комментарий и, по крайней мере, пытаюсь включить комментарии в код). Могу ли я предложить вам объяснить, как этот код работает, и как он может быть полезен для спрашивающего.insert_it
если вы знаете, что его тип -insert_iterator
.