Кроме функции push_back()
, вектор предоставляет еще несколько операций, большинство из которых подобно соответствующим операциям класса string
. Наиболее используемые из них представлены в таблице.
Операция | Объяснение |
---|---|
v.empty() | Возвращает значение true, если вектор v пуст. В противном случае возвращает значение false. |
v.size() | Возвращает количество элементов вектора v |
v.push_back(t) | Добавляет элемент со значением t в конец вектора v |
v[n] | Возвращает ссылку на элемент в позиции n вектора v |
v1 = v2 | Заменяет элементы вектора v1 копией элементов вектора v2 |
v1 = {a,b,c … } | Заменяет элементы вектора v1 копией элементов из разделяемого запятыми списка |
v1 == v2 | Векторы v1 и v2 равны, если содержат одинаковые элементы в тех же позициях |
v1 != v2 | Векторы v1 и v2 не равны, если содержат разные элементы в тех же позициях |
<, <=, >, >= | Имеют обычное значение и полагаются на алфавитный порядок |
Доступ к элементам вектора осуществляется таким же способом, как и к символам строки: по их позиции в векторе.
Изначально можно подумать, что индексирование вектора позволяет добавлять в него элементы, но это не так. Следующий код пытается добавить десять элементов в вектор vec1
:
vector<int> vec1; //пустой вектор
for (int i = 0; i < 10; i++)
vec1[i] = i; //ошибка: vec1 не имеет элементов
Причина ошибки: вектор vec1
пуст, в нем нет никаких элементов. Правильная запись с использованием функции push_back()
:
for (int i = 0; i < 10; i++)
vec1.push_back(i); //правильно
Т.е. оператор индексирования []
лишь выбирает существующий элемент, он не может добавить новый.