Unique_ptr do tablic.

0

Czy da się w ogóle użyć tego wskaźnika do zwykłych tablic, czy trzeba po prostu użyć std::array?

#include <iostream>
#include <memory>

using namespace std;

int main()
{
    unique_ptr<int>ptr(new int[10]);
    *ptr=1;
    ptr[2]=5;//Błąd
    return 0;
}
3

W przedstawionym przykładzie zdecydowanie lepszy jest array.

Ale możesz użyć tablicowej wersji:

unique_ptr<int[]> ptr{new int[10]};
1

Przecież to jest Undefined Behaviour. Do operator new[] zostaje użyty (co prawda przez unique_ptr ale jednak) operator delete a powinien operator delete[].

EDIT:
A poza tym:

do zwykłych tablic

"Zwykła tablica" w C++ wygląda następująco:

int tablica[10];

i jej następcą jest std::array.

Natomiast następcą tablic dynamicznych (czyli tych które są tworzone za pomocą operator new[]) jest std::vector.

1 użytkowników online, w tym zalogowanych: 0, gości: 1