2013-02-25 77 views
1

我正在開發具有C接口的兼容性目的庫促進原始指針到的valarray

void interface(double* context, size_t num_elements); 

context同時指向一個原始存儲器中存儲num_elementsdouble秒。在代碼的其餘部分中,是否有任何策略構建一個std::valarray,在庫調用結束後暫時管理context而不釋放它?

+0

只是提醒你這個帖子,並聽取你對我的回答:) – Sheljohn 2013-02-26 14:21:39

回答

0

難道你不能創建一個簡單的容器來滿足你的需求嗎?這是我沒有測試的一個小例子:

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

嘛,當然是好,但我知道的valarray有特殊的優化意見C++在某些情況下。 – xis 2013-02-26 20:17:28

+0

您打算如何處理需要優化的valarray?雖然沒有魔法,但如果需要,您可以在那裏簽出標準實現:http://gcc.gnu.org/onlinedocs/gcc-4.6.3/libstdc++/api/a01109_source.html – Sheljohn 2013-02-26 21:13:30