#c #vector #assign
Вопрос:
Меня смущает следующий код и то, что он делает:
first.assign (7,100); // 7 ints with a value of 100
std::vector<int>::iterator it;
it=first.begin() 1;
second.assign (it,first.end()-1); // the 5 central values of first
Я не понимаю этого second.assign
утверждения. Я бы предположил, что он присваивает 100 элементам second
значение 100. Почему размер second
равен 5?
Ответ №1:
В примере кода
it = vec.begin() 1
значение 2-го элемента
И
second.assign (it,first.end()-1);
^^^^^^^^^^
Один за последним элементом.
в нем пропущены первый и последний элементы, и, следовательно, у вас есть 7-2 = 5 элементов в последнем назначении.
Ответ №2:
Существует 2 перегрузки assign
(3 в C 11).
- Первое назначение использует
the new contents are n elements, each initialized to a copy of val.
- 2-е назначение использует
the new contents are elements constructed from each of the elements in the range between first and last, in the same order.
Поэтому 2-й присваивает копии first
из 2-го элемента предпоследнему элементу.
Комментарии:
1. ага, понял, спасибо!