Кроме функции 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); //правильно
 

Т.е. оператор индексирования [] лишь выбирает существующий элемент, он не может добавить новый.


 Похожие публикации
2016-02-13 • Просмотров [ 378 ]