所以,我有点困惑。我需要能够在运行时创建许多(最多十亿个)小型(< 8元素)固定大小的数组。我使用std::vector
,但内存开销太高(每个阵列24个字节)。
我决定实现我自己的数组,模板化包含的类型(T1
)和存储数组静态大小的类型(T2
)。
该类名为lw_vector
。如果我打电话:
sizeof(lw_vector<int, unsigned char>)
我得到16.但是,正如我计算的那样,64位系统上的大小应为sizeof(int*)+sizeof(unsigned char)=9
。我在这做错了什么?是否可以创建一个只需要9个字节内存的对象?
这是lw_vector的实现:
template<class T1, class T2>
class lw_vector
{
private:
public:
T2 N;
T1 * content;
lw_vector() : N(0)
{}
lw_vector(T2 Nt) : N(Nt)
{
content = new T1[N];
}
~lw_vector()
{
delete[] content;
}
lw_vector& operator=(lw_vector temp)
{
std::swap(N, temp.N);
std::swap(content, temp.content);
return *this;
}
lw_vector(const lw_vector& other)
: N(other.N),
content(new T1[other.N])
{
std::copy(other.content, other.content + N, content);
}
inline T1& operator[](T2 ind) const
{
return content[ind];
}
};
感谢您的时间!
约翰