小编min*_*xew的帖子

D 中缓存友好的多维数组迭代

我在 D 中有一个静态3 维数组,一般来说

Struct[WIDTH][HEIGHT][DEPTH] values;
Run Code Online (Sandbox Code Playgroud)

这些维度中的两个变成了数千。如果我想线性地遍历这个访问内存位置的数组,应该在外循环中遍历哪个维度?WIDTH或者DEPTH

caching d multidimensional-array

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

标准C++ 14中零大小数组的解决方法?

我正在为Google的V8 ECMAScript引擎开发一个绑定工具包.考虑这个模板化的函数:

    template<class... Types> void call_v8_function(v8::Local<v8::Function> function,
                                                   Types... args) {
        ...significant amount of context set-up here...

        v8::Local<v8::Value> call_args[] = { V8Utils::to_js_value(isolate, args)... };

        function->Call(this->context, sizeof...(args), call_args);
    }
Run Code Online (Sandbox Code Playgroud)

它需要可变数量的参数,并使用辅助函数将它们映射到v8 :: Value对象的数组.(参数可以有任意类型,只要它们被识别出来to_js_value)当我使用GCC或Clang编译时,这非常有效.

但是,在Visual Studio中,它完全崩溃了.在没有任何附加参数的情况下调用此模板化函数时,将声明一个大小为0的数组.虽然GCC和Clang接受了,但标准不允许这样做,Visual Studio正确地吐出error C2466: cannot allocate an array of constant size 0.

因为我发现这种方法非常方便,我正在寻找一种方法使其工作,除了复制无参数情况的函数,因为这会导致重要的代码重复.

c++ arrays visual-c++ variadic-templates c++14

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