c++ - 尾随数组习语

标签 c++ c arrays terminology idioms

什么是Trailing Array Idiom

P.S:谷歌搜索这个术语给出 vector 是使用尾随数组惯用语实现的,因此如果不改变 vector 对象本身的地址,它们就不能调整大小。

最佳答案

如果您指的是 GCC source code 中提到的尾随数组习语(你的引用来自哪里),它似乎指的是实现动态数组的旧 C 技巧:

typedef struct {
    /* header */
    size_t nelems;

    /* actual array */
    int a[1];
} IntVector;

创建数组的位置

IntVector *make_intvector(size_t n)
{
    IntVector *v = malloc(sizeof(IntVector) + sizeof(int) * (n-1));
    if (v != NULL)
        v->nelems = n;
    return v;
}

关于c++ - 尾随数组习语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231953/

相关文章:

c++ - 对 GASM 内联中的参数 'N' 的引用无效

c - 检测与由多个像素宽度和高度组成的 Sprite 的碰撞

Cygwin gcc 编译并运行,但不打印任何内容

c - 使用 C 中的 Expat 库解析 XML 文件

c - 指针作为一个数组的索引 - C

c++ - 我的类(指向另一个类的指针的容器)似乎无法访问公共(public)构造函数

c++ - 将容器中的每个元素划分为给定数字 C++

c++ - 构造类成员时消除拷贝

数组破坏了 Julia 中的字符串类型

javascript - 无法从数组(Javascript)中获取最小值?