小编use*_*072的帖子

我必须删除lambdas吗?

我在动态分配的对象中存储指向lambdas的指针:

struct Function {
    SomeType*(*func)(int);
    Function(SomeType*(*new_func)(int)):
        func(new_func) {}
}

Function* myf = new Function(
    [](int x){ return doSomething(x); }
);

delete myf;
Run Code Online (Sandbox Code Playgroud)

我是否必须在此类的析构函数中编写特殊内容?

c++ lambda destructor function-pointers c++11

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

无法识别的基于范围的循环?

为什么这段代码:

void printarray(int array[]) {
    for (int x: array) {
        std::cout << x << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

生成此编译时错误?

error: 'begin' was not declared in this scope
    for (int x: array) {
Run Code Online (Sandbox Code Playgroud)

我对基于范围的for循环的错误是什么?

c++ arrays pointers for-loop range

9
推荐指数
2
解决办法
302
查看次数

使用相同模板的多个功能?

是否可以在同一模板中包含多个函数,而不是两次重写模板?就像你在写作:

template <typename T>
void A() {
    //...
}

template <typename T>
void B() {
    //...
}
Run Code Online (Sandbox Code Playgroud)

这些功能不同,但它们共享一个类似的模板(使用泛型类型T).有没有办法只初始化模板一次?

c++ templates

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

git init,添加,从另一个目录提交

我正在编写一个Lua脚本,它创建一个目录,在其中创建一些文件并初始化git,将这些文件添加到它并最终提交所有内容.然而,没有办法cd从Lua内部使用(你可以,但它不会有效),所以我想知道是否可以git init使用目录,git add一些文件,最后git commit -a -m "message",工作目录是所需目录上方的目录.

编辑:-C工作,谢谢大家.对于任何想知道的人,在Lua中,cdos.execute结束通话后"重置" .所以,os.execute("cd mydir"); os.execute("git init");不会按预期工作.要使它工作,请使用os.execute("cd mydir; git init;");.

git cd working-directory

6
推荐指数
2
解决办法
1966
查看次数

将值声明为本地值一次比每次声明本地值慢

这段代码怎么可能:

local t
for n = 0, 255 do
    t = math.random(0, 255)
    ...
end
Run Code Online (Sandbox Code Playgroud)

实际上比这个慢吗?

for n = 0, 255 do
    local t = math.random(0, 255)
    ...
end
Run Code Online (Sandbox Code Playgroud)

由于我t...部件中不止一次访问,我想知道,for循环有自己的一组局部变量吗?如果是,从当前块访问本地变量比从外部块访问本地变量更快?

optimization lua local-variables

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

Lua和LuaJIT处理代码的方式有何不同?

据我了解,标准的Lua解释器首先将输入代码编译为“字节码”(的输出luac),然后“解释”该字节码。

但是,这基本上不是JIT编译器的定义吗?LuaJIT然后做什么?它与标准的Lua解释器有何不同?怎么会更快呢?

lua interpreter jit luajit

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

本地函数互相调用

我有两个偶尔相互调用的函数,它们是一个模块的本地函数,它使用它们来构建另一个函数.该模块有点类似于这段代码:

local function iseven(n)
    if n == 1 then
        return false
    else
        return isodd(n - 1)
    end
end

local function isodd(n)
    if n == 1 then
        return true
    else
        return iseven(n - 1)
    end
end

local evenOrOdd = function(n)
    return iseven(n) and "Even" or "Odd"
end

return evenOrOdd
Run Code Online (Sandbox Code Playgroud)

问题是,当evenOrOdd从另一个文件调用时,我得到了错误attempt to call global 'isodd' (a nil value).

我注意到如果我设置iseven为global,这不会发生,但我想将它们保留在我的模块本地.

我甚至尝试在声明local function isodd() end的行之前放置一个虚函数声明()iseven.我也尝试插入local isodd虚拟函数声明的位置,但在两种方式它都不起作用,我得到不同类型的错误.

我知道这是因为Lua有闭包,当iseven声明它捕获实际值isodd,nil …

recursion lua function local

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

C++程序的最大堆栈级别是多少?

我试着看看在通过C++中的递归获得堆栈溢出之前我能走多远.我写了这个函数

long recurse( long level ) {
    std::cout << level << std::endl;
    return recurse( ++level ) * 12 //to avoid tail recursion optimization, if present
}
Run Code Online (Sandbox Code Playgroud)

我称之为传递0作为第一个值.它打印的最后一个数字是349411,然后打印Segmentation fault并停止运行.我的猜测是内存不足,但是stack overflow在Lua中抛出错误之前,使用相同值调用的相同函数打印499982 ,如果Lua函数的内存权重比C++函数小,我会感到惊讶.

那么C++程序在停止执行之前可以获得的最大堆栈级别是多少?

是真的"直到它有记忆",还是有固定的限制?

还为什么打印Segmentation fault

这是不是只在未经授权的方式访问内存时打印的消息?

c++ stack-overflow recursion

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

尝试将 push_back 到 std::vector 时出现分段错误

我有一个Token课程,其结构如下:

class Token {
    public:
        void* value;
        token_type type; // enum to know which type of data is it storing inside value
        unsigned int line;

        Token() = default;

        Token(void* new_value, token_type new_type):
            value(new_value), type(new_type)
            {}

        ~Token() {
            //free the memory occupied by the object pointed to by value based on it's type
            //this also handles the case of the Token being an instantiation of Statement
        }
};
Run Code Online (Sandbox Code Playgroud)

然后是类声明:

class Statement: public Token {
    public:
        std::vector<Token*>* list;
        unsigned int …
Run Code Online (Sandbox Code Playgroud)

c++ pointers vector segmentation-fault

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

Ruby MRI是什么样的解释器?

它是语言翻译吗?还是字节码解释器/ JIT编译器?我在哪里可以了解有关实现的更多信息(除了浏览源代码)?

ruby implementation interpreter

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