Szukaj…


Wprowadzenie

std::forward_list to kontener, który obsługuje szybkie wstawianie i usuwanie elementów z dowolnego miejsca w kontenerze. Szybki losowy dostęp nie jest obsługiwany. Jest on zaimplementowany jako pojedynczo połączona lista i zasadniczo nie ma żadnego narzutu w porównaniu do jego implementacji w C. W porównaniu do std::list ten kontener zapewnia więcej miejsca zajmującego miejsce, gdy iteracja dwukierunkowa nie jest potrzebna.

Uwagi

Dodawanie, usuwanie i przenoszenie elementów na liście lub na kilku listach nie unieważnia iteratorów odnoszących się obecnie do innych elementów na liście. Jednak iterator lub odwołanie odnoszące się do elementu jest unieważniane, gdy odpowiedni element jest usuwany (przez erase_after) z listy. std :: forward_list spełnia wymagania kontenera (z wyjątkiem funkcji członka rozmiaru i złożoność operatora == jest zawsze liniowa), AllocatorAwareContainer i SequenceContainer.

Przykład

#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';
}

Wynik:

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

Metody

Nazwa metody Definicja
operator= przypisuje wartości do kontenera
assign przypisuje wartości do kontenera
get_allocator zwraca powiązany alokator
------ ------
Dostęp do elementu
front dostęp do pierwszego elementu
------ ------
Iteratory
before_begi n zwraca iterator do elementu przed rozpoczęciem
cbefore_begin zwraca stały iterator do elementu przed rozpoczęciem
begin zwraca iterator na początek
cbegin zwraca iterator const na początku
end zwraca iterator do końca
cend zwraca iterator do końca
Pojemność
empty sprawdza, czy pojemnik jest pusty
max_size zwraca maksymalną możliwą liczbę elementów
Modyfikatory
clear usuwa zawartość
insert_after wstawia elementy po elemencie
emplace_after konstruuje elementy w miejscu po elemencie
erase_after usuwa element po elemencie
push_front wstawia element na początek
emplace_front na początku konstruuje element w miejscu
pop_front usuwa pierwszy element
resize zmienia liczbę przechowywanych elementów
swap zamienia zawartość
Operacje
merge scala dwie posortowane listy
splice_after przenosi elementy z innej listy forward_list
remove usuwa elementy spełniające określone kryteria
remove_if usuwa elementy spełniające określone kryteria
reverse odwraca kolejność elementów
unique usuwa kolejne zduplikowane elementy
sort sortuje elementy


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow