即:http://en.wikipedia.org/wiki/Wirth_syntax_notation
似乎大多数人使用BNF/EBNF ......
此代码是否返回对堆栈上分配的变量的无效引用?或者是什么:
void *f(size_t sz) {
return alloca(sz);
}
Run Code Online (Sandbox Code Playgroud)
或者这是一个由alloca实现/编译器支持处理的特殊情况f(alloca(size), alloca(size))?
我可以按照维基百科上列出的三元树算法生成所有互质对:https: //en.wikipedia.org/wiki/Coprime_integers
很快:
Start with two coprime branches: (2,1), (3,1), then iterate:
Branch 1: (2m-n,m)
Branch 2: (2m+n,m)
Branch 3: (m+2n,n)
Run Code Online (Sandbox Code Playgroud)
然而,对于每对产生的空间使用的空间将增长三倍(并且说打印,或者不保留在存储器中).
这可能是haskell中的一个解决方案: 生成所有可能的coprimes的排序列表
但我正在寻找python中的东西,它没有懒惰的评估或无限的列表.
我想做这样的事情:
std::set<my_type*> s;
s.insert(new my_type(...));
...
s.erase(...);
Run Code Online (Sandbox Code Playgroud)
set的擦除将删除指针以避免内存泄漏.
这是可能的C++容器或适当的解决方案是子类化容器和编写我自己的擦除,或使用某种智能指针方案?