我正在開發具有C接口的兼容性目的庫促進原始指針到的valarray
void interface(double* context, size_t num_elements);
context
同時指向一個原始存儲器中存儲num_elements
double
秒。在代碼的其餘部分中,是否有任何策略構建一個std::valarray
,在庫調用結束後暫時管理context
而不釋放它?
我正在開發具有C接口的兼容性目的庫促進原始指針到的valarray
void interface(double* context, size_t num_elements);
context
同時指向一個原始存儲器中存儲num_elements
double
秒。在代碼的其餘部分中,是否有任何策略構建一個std::valarray
,在庫調用結束後暫時管理context
而不釋放它?
難道你不能創建一個簡單的容器來滿足你的需求嗎?這是我沒有測試的一個小例子:
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;
};
只是提醒你這個帖子,並聽取你對我的回答:) – Sheljohn 2013-02-26 14:21:39