Пространства имён
Варианты
Действия

std::shared_ptr::operator[]

Материал из cppreference.com
< cpp‎ | memory‎ | shared ptr
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
element_type& operator[]( std::ptrdiff_t idx ) const;
(начиная с C++17)

Индекс в массиве, на который указывает сохранённый указатель.

Поведение не определено, если сохранённый указатель имеет значение null или если idx имеет отрицательное значение.

Если T (параметр шаблона shared_ptr) является типом массива U[N], idx должен быть меньше N, иначе поведение не определено.

Содержание

[править] Параметры

idx индекс в массиве

[править] Возвращаемое значение

Ссылка на idx-й элемент массива, т.е. get()[idx]

[править] Исключения

Ничего не генерирует.

[править] Примечание

Когда T не является типом массива, не указано, объявлена ли эта функция. Если функция объявлена, то не указано, какой у неё тип возвращаемого значения, за исключением того, что объявление (хотя и не обязательно определение) функции гарантированно будет допустимым.

[править] Пример

#include <cstddef>
#include <memory>
#include <iostream>
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';
}

Вывод:

0 1 2 3 4 5 6 7 8 9

[править] Смотрите также

возвращает хранимый указатель
(public функция-элемент) [править]