Я изучаю векторы, и я запутался, как массив копирования thevector здесьЧто означает «один-последний-последний элемент» в векторах?
double p[] = {1, 2, 3, 4, 5};
std::vector<double> a(p, p+5);
Я также знаю std::vector<double> a(3,5);
означает `потесниться для 3 и инициализировать их 5. Как вышеприведенный код будет работать?
Во-вторых, я прочитал абзац, где я скопировал вышеуказанный код.
Понимание второй точки имеет решающее значение при работе с векторами или любых других стандартных контейнеров. Управляемая последовательность всегда , выраженная в терминах [first, one-last-last) - не только для ctors, но и также для каждой функции, которая работает с рядом элементов.
Я не знаю, что означает [first, one-past-last)
? Я знаю математически, но не знаю, почему/как вектор копирует массив таким образом?
Под редакцией
другой связанный с этим вопрос
Функция член
end()
возвращает итератор, что "точки" кone-past-the-last-element
в последовательности. Обратите внимание, что разыменование итератора , возвращенногоend()
, является незаконным и имеет неопределенные результаты.
Не могли бы вы объяснить это one-past-the-last-element
что это? и почему?
std :: vector имеет перегруженные конструкторы, поэтому код выше кода работает. и '[first, one-last-last]' означает, что первый элемент включен и исключен один-последний-последний, который является указателем на последний элемент + 1 –
@AngelusMortis, но почему? и я также отредактировал мой вопрос. перезагрузить. – UnKnown
прочитайте ответ сейчас :), в основном один-последний-последний указатель используется, чтобы определить, достигли ли вы конца вектора и возвращались как объект для проверки и сравнения и т. Д. –