18 февраля 2013 в 11:08
STL контейнер Vector (вектор) – динамический массив c++
Кроме массивов в c++ существуют еще контейнеры, которые позволяют вам немного по другому хранить данные и, вдобавок, применять к ним различные функции (поиск, сортировка и т.д.). Сегодня вы узнаете об одном из контейнеров - векторе (vector)
Возможно вы уже сталкивались с такой проблемой, что массивы в с++ имеют ограниченный размер, а мы точно не знаем количество элементов, необходимое в массиве. В таких случаях необходимо использовать динамическое программирование. Т.е. выделять память под элементы массива при необходимости добавить какой-либо элемент. В принципе, в с++ это можно реализовать вручную, но зачем? если есть специальный класс - vector. Он позволяет создавать нам массивы переменной длинны в зависимости от ситуации.
Для создания вектора вам необходимо подключить.
#include
Затем создание вектора почти ничем не отличается от создания переменной и/или массива:
vectorname; //здесть type- тип данных в векторе, а name - имя вектора
Для записи в вектор достаточно набрать имя вектора.push_back(что положить)
vectortest; test.push_back(10); test.push_back(20);
Обращение к n-ому элементу ничем не отличается от обращения к элементу массива:
test[0]++; cout<
Для удаления последнего элемента вектора используется функция pop_back()
test.pop_back();
Еще немного полезных функций:
итераторы
begin() - итератор на первый элемент;
end() - итератор на элемент идущий после последнего;
rbegin() - итератор на последний элемент (для обратных алгоритмов);
rend() - итератор на позицию перед первым элементом (для обратных алгоритмов).
назначение элементов
assign(InputIterator first, InputIterator last) - удалить все элементы и вставить элементы из диапазона [first, last);
assign(size_type, const T& t) - удалить все элементы и вставить n элементов со значением t;
swap(reference x, reference y) - обменять значения элементов x и y (аналогична глобальной функции).
доступ к элементам
at(size_type n) - доступ к элементу с индексом n, при некорректном значении n возбуждается исключение;
back() - доступ к последнему элементу;
front() - доступ к первому элементу.
Если исключение не нужно, то для доступа к элементам можно воспользоваться перегруженной операцией [].
удаление элементов
clear() - удалить все элементы из вектора;
erase(iterator position) - удаляет указанный элемент и возвращает итератор на следующий элемент или end();
erase(iterator first, iterator last) - удаляет элементы из диапазона [first, last).
размер вектора
empty() - возвращает истину, если размер вектора 0;
reserve(size_type n) - зарезервировать место для n элементов;
capacity() - возвращает число элементов, которое можно сохранить в векторе;
resize(size_type sz) - перевыделяет текущий размер вектора;
resize(size_type sz, T c) - перевыделяет текущий размер вектора. Если новый размер больше предыдущего, то новые элементы устанавливаются в значение c, иначе в значение по умолчанию для типа T;
size() - возвращает число элементов;
max_size() - максимально возможный размер вектора.
вставка элементов
insert(iterator position, size_type n, const T& x) - вставляет n элементов со значением x в указанную позицию;
insert(iterator position, const T& x) - вставляет элемент со значением x в указанную позицию;
insert(iterator position, InputIterator first, InputIterator last) - вставляет в указанную позицию копии элементов диапазона [first, last).
поддержка стека
pop_back() - удалить последний элемент;
push_back(const T& x) - добавить в конец элемент.
перегруженные операции
[] - операция индексации, не генерирует исключение при выходе за границы массива;
= - назначить одному вектору копии элементов второго (v1 = v2);
== - определить равны ли два вектора (v1 == v2);
!= - определить не равны ли два вектора (v1 != v2);
< - меньше ли один вектор чем другой (v1 < v2);
> - больше ли один вектор чем другой (v1 > v2);
<= - меньше или равен один вектор по отношению к другому (v1 <= v2);
>= - больше или равен один вектор по отношению к другому (v1 >= v2).
vector
Для типа bool в stl введена особая специализация шаблона. В результате размер массива меньше примерно в восемь раз - 1 бит на элемент. А также добавлен дополнительный метод:
flip() - инертировать элементы.
29 октября 2017 в 16:59
vector name; //здесть type- тип данных в векторе, а name - имя вектора
А где ЗДЕСТЬ name?
23 октября 2023 в 18:56
20
23 октября 2023 в 18:56
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:57
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:58
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
20
23 октября 2023 в 18:59
-1 OR 2+678-678-1=0+0+0+1 --
23 октября 2023 в 18:59
-1 OR 3+678-678-1=0+0+0+1 --
23 октября 2023 в 18:59
-1 OR 3*2<(0+5+678-678) --
23 октября 2023 в 18:59
-1 OR 3*2>(0+5+678-678) --
23 октября 2023 в 18:59
-1 OR 2+450-450-1=0+0+0+1
23 октября 2023 в 18:59
-1 OR 3+450-450-1=0+0+0+1
23 октября 2023 в 18:59
-1 OR 3*2<(0+5+450-450)
23 октября 2023 в 18:59
-1 OR 3*2>(0+5+450-450)
23 октября 2023 в 18:59
-1' OR 2+941-941-1=0+0+0+1 --
23 октября 2023 в 18:59
-1' OR 3+941-941-1=0+0+0+1 --
23 октября 2023 в 18:59
-1' OR 3*2<(0+5+941-941) --
23 октября 2023 в 18:59
-1' OR 3*2>(0+5+941-941) --
23 октября 2023 в 18:59
-1' OR 2+76-76-1=0+0+0+1 or 'S5VV5Ewe'='
23 октября 2023 в 18:59
-1' OR 3+76-76-1=0+0+0+1 or 'S5VV5Ewe'='
23 октября 2023 в 18:59
-1' OR 3*2<(0+5+76-76) or 'S5VV5Ewe'='
23 октября 2023 в 18:59
-1' OR 3*2>(0+5+76-76) or 'S5VV5Ewe'='
23 октября 2023 в 18:59
-1" OR 2+244-244-1=0+0+0+1 --
23 октября 2023 в 18:59
-1" OR 3+244-244-1=0+0+0+1 --
23 октября 2023 в 18:59
-1" OR 3*2<(0+5+244-244) --
23 октября 2023 в 19:00
-1" OR 3*2>(0+5+244-244) --
23 октября 2023 в 19:00
if(now()=sysdate(),sleep(15),0)
23 октября 2023 в 19:00
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
23 октября 2023 в 19:00
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
23 октября 2023 в 19:00
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
23 октября 2023 в 19:00
-1; waitfor delay '0:0:15' --
23 октября 2023 в 19:00
-1); waitfor delay '0:0:15' --
23 октября 2023 в 19:00
1 waitfor delay '0:0:15' --
23 октября 2023 в 19:00
qprlTwt7'; waitfor delay '0:0:15' --
23 октября 2023 в 19:00
-5 OR 215=(SELECT 215 FROM PG_SLEEP(15))--
23 октября 2023 в 19:00
-5) OR 454=(SELECT 454 FROM PG_SLEEP(15))--
23 октября 2023 в 19:00
-1)) OR 613=(SELECT 613 FROM PG_SLEEP(15))--
23 октября 2023 в 19:00
xdFXp8vX' OR 947=(SELECT 947 FROM PG_SLEEP(15))--
23 октября 2023 в 19:00
WIHVF0lz') OR 889=(SELECT 889 FROM PG_SLEEP(15))--
23 октября 2023 в 19:00
QMR0eWlo')) OR 651=(SELECT 651 FROM PG_SLEEP(15))--
23 октября 2023 в 19:00
20*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
23 октября 2023 в 19:00
20'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
23 октября 2023 в 19:00
1'"
23 октября 2023 в 19:00
1 А§Аў%2527%2522
23 октября 2023 в 19:00
@@LHas8
23 октября 2023 в 19:00
20
23 октября 2023 в 19:00
20
23 октября 2023 в 19:00
20
23 октября 2023 в 19:00
20
23 октября 2023 в 19:00
20
23 октября 2023 в 19:00
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:01
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:02
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:03
20
23 октября 2023 в 19:04
20
23 октября 2023 в 19:04
20
авторизуйтесь
или войдите через