小编tow*_*ele的帖子

缓存二叉树的局部性

如果我有一棵如下的树

struct tree_t {
    //data
    tree_t *left;
    tree_t *right;
};
Run Code Online (Sandbox Code Playgroud)

我想开始为叶子分配内存,有没有办法确保当我遍历树时,叶子被缓存?如果我使用的是malloc,那么我认为叶子会分散在堆中,每次尝试访问时都会出现缓存未命中.

c caching

3
推荐指数
1
解决办法
1446
查看次数

为什么我可以用C++中的撇号来分隔数字而不是C?

我在代码示例中看到了这个向量声明

std::vector<double> v(10'000'007, 0.5);
Run Code Online (Sandbox Code Playgroud)

它生成一个大小为10000007的向量,因此必须将其强制转换为size_type.我也可以将它分配给一个类型的变量,size_t这并不奇怪.同样的声明不能在C中编译,但是,我收到一个错误

#include <stdio.h>
void main()
{
unsigned x = 10'000'007;
printf("x: %d\n", x);
}

warning: multi-character character constant [-Wmultichar] unsigned x = 10'000'007;
error: expected ‘,’ or ‘;’ before '\x303030'
Run Code Online (Sandbox Code Playgroud)

这种风格使得阅读声明变得更容易,但实际上是否有一条规则添加到C++中进行编译?

c c++

-1
推荐指数
1
解决办法
129
查看次数

标签 统计

c ×2

c++ ×1

caching ×1