Эти функции изменяют размер контейнера; они не поддерживаются массивами. Контейнер forward_list обладает специальными версиями функций insert() и emplace(); см. раздел 9.3.4, а функций push_back() и emplace_back() у него нет. Функции push_front() и emplace_front() недопустимы для контейнеров vector и string. | |
|---|---|
c.push_back(t) c.emplace_back( | Создает в конце контейнера с элемент со значением t или переданным аргументом . Возвращает тип void |
c.push_front(t) c.emplace_front( | Создает в начале контейнера с элемент со значением t или переданным аргументом . Возвращает тип void |
c.insert(p,t) c.emplace(p, | Создает элемент со значением t или переданным аргументом перед элементом, обозначенным итератором p. Возвращает итератор на добавленный элемент |
c.insert(p,n,t) | Вставляет n элементов со значением t перед элементом, обозначенным итератором p. Возвращает итератор на первый вставленный элемент; если n — нуль, возвращается итератор p |
c.insert(p,b,e) | Вставляет элементы из диапазона, обозначенного итераторами b и е перед элементом, обозначенным итератором p. Итераторы b и е не могут относиться к элементам в контейнере с. Возвращает итератор на первый вставленный элемент; если диапазон пуст, возвращается итератор p |
c.insert(p,il) | il — это список значений элементов. Вставляет переданные значения перед элементом, обозначенным итератором p. Возвращает итератор на первый вставленный элемент; если список пуст, возвращается итератор p |
push_back()В разделе 3.3.2 упоминалось, что функция push_back() добавляет элемент в конец вектора. Кроме контейнеров array и forward_list, каждый последовательный контейнер (включая string) поддерживает функцию push_back().
Цикл следующего примера читает по одной строке за раз в переменную word:
//
//
string word;
while (cin >> word)
container.push_back(word);
Вызов функции push_back() создает новый элемент в конце контейнера container, увеличивая его размер на 1. Значением этого элемента будет копия значения переменной word. Контейнер может иметь любой тип: list, vector или deque.
Поскольку класс string — это только контейнер символов, функцию push_back() можно использовать для добавления символов в ее конец:
void pluralize(size_t cnt, string &word) {
if (cnt > 1)
word.push_back('s'); // то же, что и word += 's'
}