Поиск…


Вступление

std::forward_list - это контейнер, который поддерживает быструю установку и удаление элементов из любого места в контейнере. Быстрый случайный доступ не поддерживается. Он реализован как односвязный список и по существу не имеет каких-либо накладных расходов по сравнению с его реализацией в C. По сравнению с std::list этот контейнер обеспечивает более экономичное пространство, когда двунаправленная итерация не нужна.

замечания

Добавление, удаление и перемещение элементов внутри списка или нескольких списков не приводит к недействительности итераторов, которые в настоящее время ссылаются на другие элементы в списке. Однако итератор или ссылка, ссылающаяся на элемент, недействительна, когда соответствующий элемент удаляется (через erase_after) из списка. std :: forward_list соответствует требованиям Container (за исключением функции члена размера и сложность оператора == всегда линейна), AllocatorAwareContainer и SequenceContainer.

пример

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

Выход:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

методы

Имя метода Определение
operator= присваивает значения контейнеру
assign присваивает значения контейнеру
get_allocator возвращает связанный распределитель
------ ------
Доступ к элементу
front доступ к первому элементу
------ ------
итераторы
before_begi n возвращает итератор элементу перед началом
cbefore_begin возвращает константный итератор элементу перед началом
begin возвращает итератор в начало
cbegin возвращает константный итератор в начало
end возвращает итератор до конца
cend возвращает итератор до конца
Вместимость
empty проверяет, пуст ли контейнер
max_size возвращает максимально возможное количество элементов
Модификаторы
clear очищает содержимое
insert_after вставляет элементы после элемента
emplace_after создает элементы на месте после элемента
erase_after стирает элемент после элемента
push_front вставляет элемент в начало
emplace_front сначала создает элемент на месте
pop_front удаляет первый элемент
resize изменяет количество сохраненных элементов
swap своп содержимого
операции
merge объединяет два отсортированных списка
splice_after перемещает элементы из другого forward_list
remove удаляет элементы, удовлетворяющие определенным критериям
remove_if удаляет элементы, удовлетворяющие определенным критериям
reverse меняет порядок элементов
unique удаляет последовательные дублирующие элементы
sort сортирует элементы


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow