flattened2d#

[tls.flattened2d]

The class template flattened2d is an adaptor that provides a flattened view of a container of containers.

// Defined in header <oneapi/tbb/enumerable_thread_specific.h>

namespace oneapi {
namespace tbb {

    template<typename Container>
    class flattened2d {
    public:
        // Basic types
        using size_type = /* implementation-defined */;
        using difference_type = /* implementation-defined */;
        using allocator_type = /* implementation-defined */;
        using value_type = /* implementation-defined */;
        using reference = /* implementation-defined */;
        using const_reference = /* implementation-defined */;
        using pointer = /* implementation-defined */;
        using const_pointer = /* implementation-defined */;

        using iterator = /* implementation-defined */;
        using const_iterator = /* implementation-defined */;

        explicit flattened2d( const Container& c );

        flattened2d( const Container& c,
                     typename Container::const_iterator first,
                     typename Container::const_iterator last );

        iterator begin();
        iterator end();
        const_iterator begin() const;
        const_iterator end() const;

        size_type size() const;
    };

    template <typename Container>
    flattened2d<Container> flatten2d(const Container &c);

    template <typename Container>
    flattened2d<Container> flatten2d(
        const Container &c,
        const typename Container::const_iterator first,
        const typename Container::const_iterator last);

} // namespace tbb
} // namespace oneapi

Requirements:

  • A Container type must meet the container requirements from the [container.requirements.general] ISO C++ section.

Iterating from begin() to end() visits all of the elements in the inner containers. The class template supports forward iterators only.

The utility function flatten2d creates a flattened2d object from a specified container.

Member functions#

explicit flattened2d(const Container &c)#

Constructs a flattened2d representing the sequence of elements in the inner containers contained by outer container c.

Safety: these operations must not be invoked concurrently on the same flattened2d.

flattened2d(const Container &c, typename Container::const_iterator first, typename Container::const_iterator last)#

Constructs a flattened2d representing the sequence of elements in the inner containers in the half-open interval [first, last) of a container c.

Safety: these operations must not be invoked concurrently on the same flattened2d.

size_type size() const#

Returns the sum of the sizes of the inner containers that are viewable in the flattened2d.

Safety: These operations may be invoked concurrently on the same flattened2d.

iterator begin()#

Returns iterator pointing to the beginning of the set of local copies.

iterator end()#

Returns iterator pointing to the end of the set of local copies.

const_iterator begin() const#

Returns const_iterator pointing to the beginning of the set of local copies.

const_iterator end() const#

Returns const_iterator pointing to the end of the set of local copies.

Non-member functions#

template<typename Container>
flattened2d<Container> flatten2d(const Container &c, const typename Container::const_iterator b, const typename Container::const_iterator e)#

Constructs and returns a flattened2d object that provides iterators that traverse the elements in the containers within the half-open range [b, e) of a container c.

template<typename Container>
flattened2d(const Container &c)#

Constructs and returns a flattened2d that provides iterators that traverse the elements in all of the containers within a container c.