W C++, kod wyglądałby następująco:
#include <vector>
void function()
{
std::vector<double> array(100);
//some work that can return when or throw an exception
//...
return;
}
Jeśli naprawdę nie chcesz zainicjować elementów tablicy i nie ma potrzeby, aby zmienić rozmiar tablicy i nie trzeba iteratory, ty można również użyć:
#include <memory>
void function()
{
std::unique_ptr<double[]> array(new double[100]);
//some work that can return when or throw an exception
//...
return;
}
w obu przypadkach masz dostęp do poszczególnych elementów tablicy z array[0]
, array[1]
itp
Wreszcie, jeśli nie trzeba t o przeniesienie własności danych z funkcji, znać rozmiar tablicy w czasie kompilacji, a rozmiar nie jest zbyt duża, można również rozważyć bezpośredni przedmiot tablicy:
void function()
{
double array[100]; // uninitialized, add " = {}" to zero-initialize
// or:
std::array<double, 100> array; // ditto
//some work that can return when or throw an exception
//...
return;
}
Tak, jest. Uruchom wyszukiwanie w Google na "inteligentne wskaźniki". –
Lub jeszcze lepiej ['std :: array'] (http://en.cppreference.com/w/cpp/container/array) (lub ewentualnie [' std :: vector'] (http: //en.cppreference .com/w/cpp/container/vector)). –
Czytaj na idiomie RAII, używanym w Rust i C++. –