小编Gui*_*not的帖子

动态铸造的替代品

有没有dynamic_cast在C++中使用的替代方案?

例如,在下面的代码中,我希望能够让Cat对象发出呜呜声.但只有Cat对象而不是Dog对象.我知道这不利于派生类,Mammal因为它不是非常多态,但我仍然想知道我是否可以不用dynamic_cast.

我的班级宣言

class Mammal
{
       public: 
             virtual void Speak() const {cout << "Mammals yay!\n";}
};
class Cat: public Mammal
{
    public:
        void Speak() const{cout << "Meow\n";}
        void Purr() const {cout <"rrrrrrrr\n";}
};

class Dog: public Mammal
{
   public:
       void Speak() const{cout << "Woof!\n";}
};
Run Code Online (Sandbox Code Playgroud)

在主要

int main()
{

    Mammal *pMammal;

    pMammal = new Cat;

    pMammal->Purr();     //How would I call this without having to use dynamic_cast?

    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ dynamic

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

CMake TARGET_LINK_LIBRARIES中包含多个静态库

我有一个CMake多重定义链接问题与依赖于包含静态库的共享库的可执行文件.

我创建了一个foo依赖于静态库的共享库bar.

add_library(foo SHARED foo.cpp)
target_link_libraries(foo bar)
Run Code Online (Sandbox Code Playgroud)

根据定义,内容bar在库中foo.

然后我创建一个exe依赖于的可执行文件foo.

add_executable(exe exe.cpp)
target_link_libraries(exe foo)
Run Code Online (Sandbox Code Playgroud)

在链接时,我有一个multiple definition警告/错误,告诉我库bar中的函数出现两次.在查看链接命令时,我看到它exe与链接,bar并且foo不一致.

我是否会错过依赖声明中的某些内容?我错过了一个神奇的CMake关键词吗?

c++ cmake dynamic-linking

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

冒号(:) 在python 和pandas 中是如何工作的?

我创建了一个数据帧?

import pandas as pd
data = pd.DataFrame({'a':range(1,11),'b':['m','f','m','m','m','f','m','f','f','f'],'c':np.random.randn(10)})
Run Code Online (Sandbox Code Playgroud)

哪个看起来像?

    a  b         c
0   1  m  0.495439
1   2  f  1.444694
2   3  m  0.150637
3   4  m -1.078252
4   5  m  0.618045
5   6  f -0.525368
6   7  m  0.188912
7   8  f  0.159014
8   9  f  0.536495
9  10  f  0.874598
Run Code Online (Sandbox Code Playgroud)

当我想选择一些行时,我运行

data[:2] or data.ix[2]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试:

se = range(2)
data[se]
Run Code Online (Sandbox Code Playgroud)

有一个错误:

KeyError: 'No column(s) named: [0 1]'
Run Code Online (Sandbox Code Playgroud)

我知道 DataFrame 选择一个 col 作为默认值。运行时发生了什么data[se]?冒号(:) 在python 中是如何工作的?

python pandas

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

如何在硒3中执行webdriver支持的硒?

如何在硒3中执行webdriver支持的硒?

Selenium 3最近取消了名为'webdriver backed selenium'的功能

我必须执行鼠标悬停,键入这样的操作,这在Selenium 3中不再受支持.

selenium = new WebDriverBackedSelenium(driver, "http://www.google.com");
selenium.openWindow("http://www.google.com", "google");
selenium.mouseOver(anElement);
Run Code Online (Sandbox Code Playgroud)

我已尝试使用moveToElement方法,但它不会在我的网站中执行.这就是我在Selenium 2(WebDriver)中使用webdriver支持的selenium的原因.

在Selenium 3中我需要做些什么来解决这个问题

selenium automation browser-automation selenium-rc selenium3

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

Pandas - 在索引中使用merge_asof函数

代码是:

import numpy as np 
import pandas as pd

dateparse = lambda x: pd.datetime.strptime(x,'%d %m %Y %H %M')
vento = pd.read_csv('dados_tpm.txt', header=0, delim_whitespace= True, parse_dates = [['Dia', 'Mes', 'Ano', 'Hora','Minuto']], index_col = False, date_parser = dateparse)
vento1 = vento.rename(columns={'Dia_Mes_Ano_Hora_Minuto': 'Data'})
vento0 = vento1.set_index('Data')
vento_time = pd.DataFrame({'Data':pd.date_range(start='2016-07-12 18:00:00',end='2017-02-28 21:00:00',freq='3H')})
vento_time0 = vento_time.set_index('Data')
vento_2 = pd.merge_asof(vento_time0,vento0, on='Index', tolerance=pd.Timedelta("5 minutes")).fillna('NAN')
Run Code Online (Sandbox Code Playgroud)

在哪里vento0是这样的:

Index               Vel Dir
2016-07-12 16:17:00 9.8  13.8
2016-07-12 16:18:00 10.9 1.8
2016-07-12 16:19:00 10.0 11.1
2016-07-12 16:20:00 11.0 11.0
... …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

docker-compose down with a non-default yml file name

我有一个非默认的docker-compose文件名(docker-compose-test.yml)。其中仅定义了一项服务。

我正在使用“ docker-compose -f docker-compose-test.yml up”启动容器

我正在尝试停止使用docker-compose启动上面启动的容器,但是它不起作用。

我遇到错误了,

ERROR:
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml
Run Code Online (Sandbox Code Playgroud)

我了解它正在寻找默认的docker compose文件名。有没有办法在docker-compose down期间指定自定义配置文件名?

docker-compose

3
推荐指数
5
解决办法
2854
查看次数

如何将嵌套字典转换为defaultdict?

如何将嵌套字典转换为嵌套的defaultdict?

dic = {"a": {"aa": "xxx"}}
default = defaultdict(lambda: None, dic)
print(default["dummy_key"])  # return None
print(default["a"]["dummy_key"])  # KeyError
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

如何在Eigen中对MatrixXd进行FFT?

看来下面的代码是正确的:

#include <Eigen/Core>
#include <unsupported/Eigen/FFT>

int main ()
{
    Eigen::FFT<float> fft;
    Eigen::Matrix<float, dim_x, dim_y> in = setMatrix();
    Eigen::Matrix<complex<float>, dim_x, dim_y> out;

    for (int k = 0; k < in.rows(); k++) {
        Eigen::Matrix<complex<float>, dim_x, 1> tmpOut;
        fft.fwd(tmpOut, in.row(k));
        out.row(k) = tmpOut;
    }

    for (int k = 0; k < in.cols(); k++) {
        Eigen::Matrix<complex<float>, 1, dim_y> tmpOut;
        fft.fwd(tmpOut, out.col(k));
        out.col(k) = tmpOut;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这必须在编译时指定矩阵的大小,当我将Matrix更改为MatrixXd时,编译时会出错.我想知道如何在MatrixXd上进行FFT,这样我就可以在运行时指定矩阵大小.

c++ eigen eigen3

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

1到n的整数之和

我正在尝试编写一个程序,将数字从1累加到n。我设法让它多次打印数字,但并没有全部添加。它继续只是将两个数字相加。

我的第一次尝试是:

def problem1_3(n):
    my_sum = 0
    # replace this pass (a do-nothing) statement with your code
    while my_sum <= n:
        my_sum = my_sum + (my_sum + 1)
    print() 
    print(my_sum)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

python

2
推荐指数
3
解决办法
2万
查看次数

Pybind11,如何调用 std::vector 中对象的 __repr__ ?

我正在绑定类型 my_type

py::class_<my_type, std::shared_ptr<my_type>>(m, "MyType")
        .def("__repr__", [](const my_type& o){return fmt::format("MyType: {}", o);});
Run Code Online (Sandbox Code Playgroud)

以及 std::vector<my_type> 与

py::bind_vector<std::vector<my_type>>(m, "MyTypeVector");
Run Code Online (Sandbox Code Playgroud)

如果我希望它的输出是容器中每个对象__repr__的序列,我可以/应该如何在这里声明 MyTypeVector 的方法?MyType.__repr__

pybind11

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