##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::forward_list::forward_list

From cppreference.com
< cpp‎ | container‎ | forward list

[edit template]

| (1) |
explicit forward_list( const Allocator& alloc = Allocator() ); |  | (since C++11) (until C++14)
forward_list() : forward_list( Allocator() ) {} explicit forward_list( const Allocator& alloc ); |  | (since C++14)
forward_list( size_type count, const T& value, const Allocator& alloc = Allocator()); | (2) | (since C++11)
| (3) |
explicit forward_list( size_type count ); |  | (since C++11) (until C++14)
explicit forward_list( size_type count, const Allocator& alloc = Allocator() ); |  | (since C++14)
template< class InputIt > forward_list( InputIt first, InputIt last, const Allocator& alloc = Allocator() ); | (4) | (since C++11)
forward_list( const forward_list& other ); | (5) | (since C++11)
forward_list( const forward_list& other, const Allocator& alloc ); | (5) | (since C++11)
forward_list( forward_list&& other ) | (6) | (since C++11)
forward_list( forward_list&& other, const Allocator& alloc ); | (6) | (since C++11)
forward_list( std::initializer_list<T> init, const Allocator& alloc = Allocator() ); | (7) | (since C++11)

Constructs new container from a variety of data sources and optionally using user supplied allocator `alloc`.

1) Default constructor. Constructs empty container.
2) Constructs the container with `count` copies of elements with value `value`.
3) Constructs the container with `count` value-initialized (default constructed, for classes) instances of `T`. No copies are made.
4) Constructs the container with the contents of the range `[first, last)`. This constructor does not participate in overload resolution if `InputIt` does not satisfy `InputIterator`, to avoid ambiguity with the overload 2 (since C++11)
5) Copy constructor. Constructs the container with the copy of the contents of `other`. If `alloc` is not provided, allocator is obtained by calling std::allocator_traits<allocator_type>::select_on_container_copy_construction(other).
6) Move constructor. Constructs the container with the contents of `other` using move semantics. If `alloc` is not provided, allocator is obtained by move-construction from the allocator belonging to `other`.
7) Constructs the container with the contents of the initializer list `init`.

### [edit] Parameters

alloc | - | allocator to use for all memory allocations of this container
count | - | the size of the container
value | - | the value to initialize elements of the container with
first, last | - | the range to copy the elements from
other | - | another container to be used as source to initialize the elements of the container with
init | - | initializer list to initialize the elements of the container with
Type requirements
- `Allocator` must meet the requirements of `Allocator`.
- `InputIt` must meet the requirements of `InputIterator`.

### [edit] Complexity

1) Constant
2-3) Linear in `count`
4) Linear in distance between `first` and `last`
5) Linear in size of `other`
6) Constant. If `alloc` is given and alloc != other.get_allocator(), then linear.
7) Linear in size of `init`

### [edit] Example

Run this code

    #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]

### [edit] See also

assign | assigns values to the container (public member function) [edit]
operator= | assigns values to the container (public member function) [edit]

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/container/forward_list/forward_list&oldid=50499"