Продвижение необработанного указателя на valarray

Я разрабатываю библиотеку, которая имеет интерфейс C для совместимости

void interface(double* context, size_t num_elements);

в то время как context указывает на сырое хранение памяти num_elements doubles. В оставшейся части кода есть ли стратегии для создания std::valarray которые временно управляют context не освобождая его после завершения вызова библиотеки?

1

Решение

Не могли бы вы создать простой контейнер для своих нужд? Вот небольшой пример, который я не тестировал:

template <class T>
class custom_valarray
{
public:

// Ctor/dtor
custom_valarray() { clear(); }
~custom_valarray() { clear(); }
custom_valarray( T *ptr, const unsigned &s ) { set(ptr,s); }

// Clear container
void clear() { data = nullptr; size = 0; }

// Set data
void set( T *ptr, const unsigned &s ) { data = ptr; size = s; }

// Test if container is set
operator bool() const { return data; }
bool empty() const { return data; }

// Accessors
T* data() { return data; }
T& operator[] ( const unsigned &i )
{
static T garbage;
return i < size ? data[i] : garbage;
}

// Iterators
T* begin() { return data; }
T* end() { return data+size; }

private:

T *data;
unsigned size;
};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]