<分区>
我目前正在学习智能指针,但从“普通”指针过渡时遇到了一些麻烦。 我想知道是否可以从指向 shared_ptr 数组内元素的函数返回 shared_ptr?
在 main 函数中我声明了一个 int 数组:
shared_ptr<int[]> arr(new int[size]);
我想创建的函数会将 shared_ptr 返回到数组的最小元素:
shared_ptr<int> getSmallestElement(shared_ptr<int[]> arr, int size) {
int smallestValue = arr[0], smallestIndex = 0;
for (int i = 1; i < size; i++) {
if (smallestValue > arr[i]) {
smallestValue = arr[i];
smallestIndex = i;
}
}
// what would be the equivalent shared_ptr code for the code below?
int *returnPointer = arr[smallestIndex];
return returnPointer;
}
我得到的最接近的,但这是使用我的普通指针的逻辑,是:
shared_ptr<int> returnPointer = arr.get() + smallestIndex;
return returnPointer;
是否可以使用 shared_ptr 来做到这一点,或者使用 unique_ptr 是首选方式吗?