std::shared_ptr<T>::operator[]
声明
C++17
element_type& operator[]( std::ptrdiff_t idx ) const;
索引由存储指针指向的数组。
如果存储的指针为 null
或 idx
为负,则行为未定义。
如果 T
(shared_ptr
的模板参数)是一个数组类型 U[N]
,则 idx 必须小于 N
,否则行为未定义。
参数
idx
- 数组索引
返回值
指向数组的 idx
-th 元素的引用,即 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] << ' ';
}
}
结果
0 1 2 3 4 5 6 7 8 9