小编mag*_*gu_的帖子

void*是否合法使用?

void*在C++中是否合法使用?或者这是因为C有它吗?

只是回顾一下我的想法:

输入:如果我们想要允许多个输入类型,我们可以重载函数和方法,或者我们可以定义一个公共基类或模板(感谢在答案中提到这一点).在这两种情况下,代码都更具描述性并且更不容易出错(假设基类以合理的方式实现).

输出:我想不出任何我希望接收的情况 void*,而不是从已知基类派生的东西.

只是为了说明我的意思:我没有具体询问是否有用例void*,但是如果有一个案例void*是最好的或唯一可用的选择.以下几个人已经完全回答了这个问题.

c++

86
推荐指数
5
解决办法
5315
查看次数

C/C++中的无限循环

有几种可能性来进行无限循环,这里有一些我会选择:

  • for(;;) {}
  • while(1) {}/while(true) {}
  • do {} while(1)/do {} while(true)

是否有某种形式应该选择?现代编译器是否会在中间和最后一个语句之间产生影响,或者它是否意识到它是一个无限循环并完全跳过检查部分?

编辑:因为已经提到我忘记了goto,但这是因为我根本不喜欢它作为一个命令.

Edit2:我对从kernel.org获取的最新版本做了一些grep.我确实看起来随着时间的推移没有太大变化(至少在内核中) 在此输入图像描述

c c++ loops infinite-loop

57
推荐指数
7
解决办法
9万
查看次数

选项卡在Matlab中完成自定义类方法

我创建了一个自定义类,其中文件由构造函数和方法加载(路径作为输入提供),例如:

Classdeclaration:

classdef Foo > handle
  methods
    function o = Foo(file), end
    function bar(o,file), end
  end
end
Run Code Online (Sandbox Code Playgroud)

TC.xml文件:

  <binding name="Foo" ctype="FILE"/>
  <binding name="bar" ctype="MCOSCLASS FILE"/>
Run Code Online (Sandbox Code Playgroud)

Matlab命令提示符:

s = Foo('+ Tab列出可用文件.

s.bar('+ Tab有效

但问题是Tab完成不仅限于Foo类.改变这TC.xsd一点的诀窍并不是很不幸.到目前为止,Yair Altman帮助我实现了这一点.再次感谢你.

整个过程可以在这里找到:

matlab class tab-completion

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

加速结构化NumPy阵列

NumPy 数组非常适合性能和易用性(比列表更容易切片,索​​引).

我试图建立一个数据容器出来的NumPy structured array,而不是dictNumPy arrays.问题是性能要差得多.使用同类数据约为2.5倍,异构数据约为32倍(我在谈论NumPy数据类型).

有没有办法加快结构化阵列的速度?我尝试将记忆顺序从'c'更改为'f',但这没有任何影响.

这是我的分析代码:

import time
import numpy as np

NP_SIZE = 100000
N_REP = 100

np_homo = np.zeros(NP_SIZE, dtype=[('a', np.double), ('b', np.double)], order='c')
np_hetro = np.zeros(NP_SIZE, dtype=[('a', np.double), ('b', np.int32)], order='c')
dict_homo = {'a': np.zeros(NP_SIZE), 'b': np.zeros(NP_SIZE)}
dict_hetro = {'a': np.zeros(NP_SIZE), 'b': np.zeros(NP_SIZE, np.int32)}

t0 = time.time()
for i in range(N_REP):
    np_homo['a'] += i

t1 = time.time()
for i in range(N_REP):
    np_hetro['a'] += i

t2 = time.time() …
Run Code Online (Sandbox Code Playgroud)

performance numpy python-3.x

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

为什么python中有一个不相等的运算符

我想知道有一个不平等的运营商的原因python.

以下剪辑:

class Foo:
    def __eq__(self, other):
        print('Equal called')
        return True

    def __ne__(self, other):
        print('Not equal called')
        return True

if __name__ == '__main__':
    a = Foo()

    print(a == 1)
    print(a != 1)
    print(not a == 1)
Run Code Online (Sandbox Code Playgroud)

输出:

Equal called
True
Not equal called
True
Equal called
False
Run Code Online (Sandbox Code Playgroud)

这实际上是否可能会引发很多麻烦:

A == B and A != B
Run Code Online (Sandbox Code Playgroud)

可以同时正确.此外,这在忘记实施时引入了潜在的缺陷__ne__.

python operator-overloading python-3.x

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

在Python,MATLAB等中使用eval

我知道不应该使用eval.出于所有明显的原因(性能,可维护性等).我的问题更侧重 - 是否有合法用途?应该使用它而不是以另一种方式实现代码.

由于它以多种语言实现并且可能导致糟糕的编程风格,因此我认为它仍然可用.

python matlab eval

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

如何通过几个函数传递多个参数

假设我们有一个公开的函数(级别 0)。我们用各种参数调用这个函数。该函数在内部调用第二个函数(级别 1),但不使用任何给定的参数,而是使用它们作为参数调用第三个函数(级别 2)。然而,它可能会做一些其他的事情。

我的问题是。我们如何传递参数而不在中间层函数(级别 1)中产生太多噪音?我在下面列出了一些可能的方法。但是请注意,其中一些相当丑陋,仅出于完整性原因才存在。我正在寻找一些既定的指导方针,而不是关于该主题的个人意见

# Transport all of them individually down the road.
# This is the most obvious way. However the amount of parameter increases the
# noise in A_1 since they are only passed along
def A_0(msg, term_print):
    A_1(msg, term_print)

def A_1(msg, term_print):
    A_2(msg, term_print)

def A_2(msg, term_print):
    print(msg, end=term_print)


# Create parameter object (in this case dict) and pass it down.
# Reduces the amount of parameters. However when only reading the source of B1 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

为什么元组格式限制为Rust中的12个项目?

我刚刚在Rust开始了一个教程,我无法理解元组打印的局限性:

fn main() {
    // Tuple definition
    let short = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
    let long = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);

    println!("{:?}", short); // Works fine
    println!("{:?}", long);  // ({integer}...{integer})` cannot be formatted using `:?` because it doesn't implement `std::fmt::Debug`
}
Run Code Online (Sandbox Code Playgroud)

在我无知的观点中,通过迭代整个元组可以很容易地实现打印 - 这将允许在没有大小限制的情况下进行显示.如果解决方案很简单就会实现,我在这里缺少什么?

printing tuples rust

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

在inkscape中加载pdf时字体更改

我有一个PDF文档,并希望再次以PDF格式保存页面的一部分.通过加载所述页面很容易,inkscape但本节中的文本以某种方式搞砸了.(字母和原始字母之间的空格)与导入设置无关.

有没有办法将pdf导入到inkscape中保存字体? - pdf查看器似乎没有任何问题...

pdf inkscape

6
推荐指数
0
解决办法
540
查看次数

如何编译模块

我目前有一个主要应用程序,其中的某些部分可以“实时修补”。例如。一些具有预定义名称和签名的函数可以在运行时更新。目前,重新修补是通过以下两个步骤执行的:

  • 使用 std::process::Command 调用 rustc 从源代码编译 cdylib。每个输出文件都有一个新名称,以确保 dlopen 不会使用缓存的旧文件
  • 使用 libloading 加载并运行新修补的函数

由于几个原因,这显然并不理想。我的问题是是否有更好的方法来实现这一目标?例如,从 Rust 内部进行编译。

附加信息:

  • 补丁文件不需要任何外部 crate
  • 补丁文件需要了解一些常见的库模块,这些模块不会实时修补

rust rust-cargo

6
推荐指数
0
解决办法
271
查看次数