我在使用std :: list <std :: string>时偶然发现Stack Overflow问题内存泄漏与std :: string,其中一条评论说:
停止使用
new
这么多.我看不出你在任何地方使用新的任何理由.您可以使用C++中的值创建对象,这是使用该语言的巨大优势之一.您不必在堆上分配所有内容.不要像Java程序员那样思考.
我不太确定他的意思是什么.为什么要尽可能经常地用C++中的值创建对象,它在内部有什么区别?我误解了答案吗?
想象一下,我有以下型号:
class Person(models.Model):
...other stuff...
optional_first_name= models.CharField(max_length=50, blank=True)
Run Code Online (Sandbox Code Playgroud)
我将如何编写一个返回最常用名称数组的请求,按其出现次序递减,计数,而忽略空名称?
即对于有13个Leslies,8个Andys,3个Aprils,1个Ron和18个未指定其名称的人的数据库,输出将是:
[('leslie',13),('andy',8),('april',3),('ron',1)]
我能得到的最接近的是:
q= Person.objects.all()
q.query.group_by=['optional_first_name']
q.query.add_count_column()
q.values_list('optional_first_name', flat= True)
Run Code Online (Sandbox Code Playgroud)
但它仍然不是我想要的.
我有一个看起来像这样的函数:
def f():
call_some_function_A()
call_some_function_B()
[...]
call_some_function_Z()
Run Code Online (Sandbox Code Playgroud)
我希望函数反向执行; 也就是说,执行必须如下所示:
def f'():
call_some_function_Z()
[...]
call_some_function_B()
call_some_function_A()
Run Code Online (Sandbox Code Playgroud)
(f
总是这样,逻辑上可以反转它;即没有变量声明或类似的东西).
我怎么能做到这一点?
我不能只编写一个反向f'
调用语句的函数f
,因为我不希望f'
每次f
更改都要更新.
我也无法修改f
.
(请不要告诉我,我不应该尝试这样做,或者重新设计我的代码,或类似的东西 - 这不可能.)