std::shared_ptr<T>::operator[] - cppreference.com
Namespaces
Variants

std::shared_ptr<T>::operator[]

From cppreference.com
 
 
Memory management library
(exposition only*)
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
(until C++20*)
(until C++20*)

Garbage collector support (until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
 
 
element_type& operator[]( std::ptrdiff_t idx ) const;
(since C++17)

Index into the array pointed to by the stored pointer.

If the stored pointer is null, the behavior is undefined.

If idx is negative, or T is an array type U[N] and idx is greater than or equal to N, the behavior is undefined.

(until C++26)

If idx is negative, or T is an array type U[N] and idx is greater than or equal to N:

(since C++26)

Parameters

idx - the array index

Return value

A reference to the idx-th element of the array, i.e., get()[idx].

Exceptions

Throws nothing.

Remarks

When T is not an array type, it is unspecified whether this function is declared. If the function is declared, it is unspecified what its return type is, except that the declaration (although not necessarily the definition) of the function is guaranteed to be legal.

Example

#include <cstddef>
#include <iostream>
#include <memory>

int main()
{
    const std::size_t arr_size = 10;
    std::shared_ptr<int[]> pis(new int[10]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9});
    for (std::size_t i = 0; i < arr_size; ++i)
        std::cout << pis[i] << ' ';
    std::cout << '\n';
}

Output:

0 1 2 3 4 5 6 7 8 9

See also