Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/named req/SequenceContainer"

From cppreference.com
< cpp‎ | named req
m (r2.7.3) (Robot: Adding de, es, fr, it, ja, pt, ru, zh)
Line 31: Line 31:
 
std::distance(i,j)}}
 
std::distance(i,j)}}
 
|-
 
|-
|{{c|X(il)}}|| || {{c|X(il.begin(),il.end)}} || ||
+
|{{c|X(il)}}|| || {{c|X(il.begin(),il.end())}} || ||
 
|-
 
|-
 
|{{c|1=a = il}}||{{c|X&}}||Assigns the range represented by {{ttb|il}} into {{ttb|a}}
 
|{{c|1=a = il}}||{{c|X&}}||Assigns the range represented by {{ttb|il}} into {{ttb|a}}

Revision as of 12:59, 27 February 2013

Template:cpp/concept/title Template:cpp/concept/navbar

A SequenceContainer is a Template:concept that stores objects of the same type in a linear arrangement.

Contents

Requirements

Legend

X Container type
T Element type
a, b Objects of type X
t Object of type T
n Positive integer
i, j Template:concepts denoting a valid range
il std::initializer_list<T>
args Parameter pack
p, q const_iterators in a


expression return type effects precondition postcondition
X(n,t) Constructs a SequenceContainer containing n copies of t T Template:concept std::distance(begin(),end()) == n
X(i,j) Constructs a SequenceContainer equivalent to the range [i,j) std::distance(begin(),end()) ==

std::distance(i,j)

X(il) X(il.begin(),il.end())
a = il X& Assigns the range represented by il into a T Template:concept and Template:concept Existing elements of a are destroyed or assigned to
a.emplace(p,args) iterator Insert an object constructed with std::forward<Args>(args) before p
a.emplace(p,t) iterator Inserts a copy of t before i
a.insert(p,n,t) iterator Inserts n copies of t before i T Template:concept and Template:concept
a.insert(p,i,j) iterator Inserts copies of elements in [i, j) before p Each iterator in [i,j) is dereferenced once
a.insert(p, il) iterator a.insert(p,il.begin(),il.end())
a.erase(q) iterator Erases the element pointed to by q (std::deque, std::vector) T Template:concept
a.erase(p,q) iterator Erases elements in [p,q) (std::deque, std::vector) T Template:concept
a.clear() void Destroys all elements in a
  • All references are invalidated
  • a.empty() == true
a.assign(i,j) void Replaces elements in a with a copy of [i, j) Each iterator in [i,j) is dereferenced once
a.assign(il) void a.assign(il.begin(),il.end())
a.assign(n,t) void Replaces elements in a with n copies of t T Template:concept and Template:concept

Optional Operations

SequenceContainers in the standard library

Template:cpp/container/dcl list arrayTemplate:cpp/container/dcl list vectorTemplate:cpp/container/dcl list dequeTemplate:cpp/container/dcl list forward listTemplate:cpp/container/dcl list list

Trade-offs / usage notes

std::array Fast access but fixed number of elements
std::vector Fast access but mostly inefficient insertions/deletions
std::list
std::forward_list
Efficient insertion/deletion in the middle of the sequence
std::deque Efficient insertion/deletion at the beginning and at the end of the sequence