小编CH2*_*ain的帖子

矢量、unique_ptr 和 Push_back 错误

我正在学习智能指针,以下示例test.cpp

#include<iostream>
#include<vector>
#include<memory>

struct abstractShape
{
    virtual void Print() const=0;
};

struct Square: public abstractShape
{
    void Print() const override{
        std::cout<<"Square\n";
    }
};

int main(){
    std::vector<std::unique_ptr<abstractShape>> shapes;
    shapes.push_back(new Square);

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

上面的代码有编译错误“c++ -std=c++11 test.cpp”:

smart_pointers_2.cpp:19:12: error: no matching member function for call to 'push_back'
    shapes.push_back(new Square);
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解释一下这个错误吗?顺便说一句,当我更改push_back为时emplace_back,编译器仅给出警告。

c++ unique-ptr implicit-conversion

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

一个长期的难题,如何优化python中的多级循环?

我在python中编写了一个函数来计算高斯展宽中的Delta函数,它涉及4级循环.但是,效率非常低,比以类似方式使用Fortran慢约10倍.

def Delta_Gaussf(Nw, N_bd, N_kp, hw, eigv):
    Delta_Gauss = np.zeros((Nw,N_kp,N_bd,N_bd),dtype=float)
    for w1 in range(Nw):
        for k1 in range(N_kp):
            for i1 in range(N_bd):
                for j1 in range(N_bd):
                    if ( j1 >= i1 ):
                        Delta_Gauss[w1][k1][i1][j1] = np.exp(pow((eigv[k1][j1]-eigv[k1][i1]-hw[w1])/width,2))
    return Delta_Gauss
Run Code Online (Sandbox Code Playgroud)

我删除了一些常量,使它看起来更简单.

任何人都可以帮我优化这个脚本以提高效率吗?

python numpy

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

标签 统计

c++ ×1

implicit-conversion ×1

numpy ×1

python ×1

unique-ptr ×1