模板来确定以字节为单位的各种变量的大小

Template to determine the size in bytes of various variables

本文关键字:变量 为单位 确定以 字节      更新时间:2023-10-16

我需要一种通用的方法来确定当前分配的连续变量的内存大小,而不需要为每种类型创建大量模板。我主要需要这个模板函数用于c++风格的容器,但是(因为我事先不知道类型)我需要它也兼容基本的C类型。

编辑了这个问题,让它听起来更有描述性和学究气。

c++ 14的解决方案,假设我理解你的意思:

template <class Container>
constexpr auto byte_size(const Container& container) {
    using std::begin;
    using std::end;
    return (end(container) - begin(container)) * sizeof(container[0]);
}

注意,即使容器是空的,这也会起作用,因为sizeof不计算它的操作数。

它不会为std::vector<bool>工作,虽然-我猜你必须添加一个专门化