C++
std :: forward_list
Sök…
Introduktion
std::forward_list
är en behållare som stöder snabb insättning och borttagning av element var som helst i behållaren. Snabb slumpmässig åtkomst stöds inte. Den implementeras som en enskilt länkad lista och har i huvudsak inte några omkostnader jämfört med dess implementering i C. Jämfört med std::list
denna behållare mer platseffektiv lagring när dubbelriktad iteration inte behövs.
Anmärkningar
Att lägga till, ta bort och flytta elementen i listan eller över flera listor ogiltiggör inte de iteratorer som för närvarande hänvisar till andra element i listan. En iterator eller referens som hänvisar till ett element ogiltiggörs dock när motsvarande element tas bort (via erase_after) från listan. std :: forward_list uppfyller kraven i Container (förutom storleksmedlemfunktionen och operatörens == komplexitet är alltid linjär), AllocatorAwareContainer och SequenceContainer.
Exempel
#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';
}
Produktion:
words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]
metoder
Metodnamn | Definition |
---|---|
operator= | tilldelar värden till behållaren |
assign | tilldelar värden till behållaren |
get_allocator | returnerar tillhörande tilldelare |
------ | ------ |
Elementåtkomst | |
front | åtkomst till det första elementet |
------ | ------ |
iteratorer | |
before_begi n | returnerar en iterator till elementet innan du börjar |
cbefore_begin | returnerar en konstant iterator till elementet innan du börjar |
begin | returnerar en iterator till början |
cbegin | returnerar en const iterator till början |
end | returnerar en iterator till slutet |
cend | returnerar en iterator till slutet |
Kapacitet | |
empty | kontrollerar om behållaren är tom |
max_size | returnerar maximalt möjliga antal element |
modifierare | |
clear | rensar innehållet |
insert_after | sätter in element efter ett element |
emplace_after | konstruerar element på plats efter ett element |
erase_after | raderar ett element efter ett element |
push_front | sätter in ett element till början |
emplace_front | konstruerar ett element på plats i början |
pop_front | tar bort det första elementet |
resize | ändrar antalet lagrade element |
swap | byter innehåll |
Operationer | |
merge | sammanfogar två sorterade listor |
splice_after | flyttar element från en annan framåtlista |
remove | tar bort element som uppfyller specifika kriterier |
remove_if | tar bort element som uppfyller specifika kriterier |
reverse | vänder elementets ordning |
unique | tar bort på varandra följande duplicerade element |
sort | sorterar elementen |