如果我有一棵如下的树
struct tree_t {
//data
tree_t *left;
tree_t *right;
};
Run Code Online (Sandbox Code Playgroud)
我想开始为叶子分配内存,有没有办法确保当我遍历树时,叶子被缓存?如果我使用的是malloc,那么我认为叶子会分散在堆中,每次尝试访问时都会出现缓存未命中.
我在代码示例中看到了这个向量声明
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++中进行编译?