unique_ptr<type> var
unique_ptr<type> var(size)
make_unique<type>
make_unique<type>(int size)
reset()
will free the pointer.
move(ptr)
moves the unique pointer from variable to another.
swap(ptr)
get()
can be used to get to the underlying raw pointer.
release()
the pointer no longer manages the memory.
int & operator[](size_t i); const int & operator[](size_t i) const;