C++
std :: forward_list
Zoeken…
Invoering
std::forward_list
is een container die het snel invoegen en verwijderen van elementen vanuit elke plek in de container ondersteunt. Snelle willekeurige toegang wordt niet ondersteund. Het is geïmplementeerd als een afzonderlijk gekoppelde lijst en heeft in wezen geen overhead vergeleken met de implementatie in C. Vergeleken met std::list
biedt deze container meer ruimte-efficiënte opslag wanneer bidirectionele iteratie niet nodig is.
Opmerkingen
Het toevoegen, verwijderen en verplaatsen van de elementen binnen de lijst of over verschillende lijsten, maakt de iterators die momenteel verwijzen naar andere elementen in de lijst niet ongeldig. Een iterator of verwijzing naar een element is echter ongeldig wanneer het overeenkomstige element (via erase_after) uit de lijst wordt verwijderd. std :: forward_list voldoet aan de vereisten van Container (behalve de functie voor lidgrootte en de complexiteit van die operator == is altijd lineair), AllocatorAwareContainer en SequenceContainer.
Voorbeeld
#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';
}
Output:
words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]
methoden
Methode naam | Definitie |
---|---|
operator= | wijst waarden toe aan de container |
assign | wijst waarden toe aan de container |
get_allocator | geeft de bijbehorende allocator terug |
------ | ------ |
Element toegang | |
front | toegang tot het eerste element |
------ | ------ |
iterators | |
before_begi n | retourneert een iterator naar het element voordat u begint |
cbefore_begin | retourneert een constante iterator naar het element voordat u begint |
begin | keert een iterator terug naar het begin |
cbegin | keert een constiter terug naar het begin |
end | geeft een iterator terug naar het einde |
cend | geeft een iterator terug naar het einde |
Capaciteit | |
empty | controleert of de container leeg is |
max_size | geeft het maximaal mogelijke aantal elementen terug |
modifiers | |
clear | wist de inhoud |
insert_after | voegt elementen achter een element in |
emplace_after | construeert elementen op hun plaats na een element |
erase_after | wist een element na een element |
push_front | voegt een element toe aan het begin |
emplace_front | bouwt in het begin een element op zijn plaats |
pop_front | verwijdert het eerste element |
resize | verandert het aantal opgeslagen elementen |
swap | wisselt de inhoud |
Activiteiten | |
merge | voegt twee gesorteerde lijsten samen |
splice_after | verplaatst elementen van een andere forward_list |
remove | verwijdert elementen die aan specifieke criteria voldoen |
remove_if | verwijdert elementen die aan specifieke criteria voldoen |
reverse | keert de volgorde van de elementen om |
unique | verwijdert opeenvolgende dubbele elementen |
sort | sorteert de elementen |