gpt4 book ai didi

c++ - 将原始指针提升到 valarray

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:54 25 4
gpt4 key购买 nike

出于兼容性目的,我正在开发一个具有 C 接口(interface)的库

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;
};

关于c++ - 将原始指针提升到 valarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15077173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com