小编new*_*ost的帖子

使用终端linux mint找到并复制目录中的所有图像,试图理解语法

OS Linux Mint

就像标题最后说的那样,我希望找到并复制目录中的所有图像.

我发现:

找到目录中的所有jpg(或JPG)文件,并将它们复制到文件夹/ home/joachim/neu2中:

find . -iname \*.jpg -print0 | xargs -I{} -0 cp -v {} /home/joachim/neu2
Run Code Online (Sandbox Code Playgroud)

找到目录中的所有图像文件:

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image' 
Run Code Online (Sandbox Code Playgroud)

我的问题首先是,我真的不懂语法.有人可以解释一下代码吗?

其次,有人可以连接这两个代码来生成一个符合我想要的代码;)

提前问候和感谢!

linux terminal grep find linux-mint

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

Armadillo初始化列表无效

我在Windows 10下使用MSVC2013 64位编译器.

根据:

std::cout << arma::arma_version::as_string() << std::endl;
Run Code Online (Sandbox Code Playgroud)

我有Armadillio库的6.100.1版(Midnight Blue).

例如,我启用了C++ 11

auto il = { 10, 20, 30 };
for(auto ele : il)
    cout<<ele<<endl;
Run Code Online (Sandbox Code Playgroud)

工作中.还正确添加了库,运行以下代码:

vec v;
v<<10<<20<<30;
cout<<v;
Run Code Online (Sandbox Code Playgroud)

但是尝试使用Armadillio的初始化列表失败了.

vec v = { 1.0, 2.0, 3.0 };
Run Code Online (Sandbox Code Playgroud)

导致编译错误:

错误:C2440:'初始化':无法从'initializer-list'转换为'arma :: Col'没有构造函数可以采用源类型,或者构造函数重载解析是模糊的

c++ initializer-list armadillo c++11

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

HDF5作为Windows下的动态链接库Qt/C++

我下载了

Windows(64 位) 1 编译器:CMake VS 2013 C、C++、IVF 15 从这里

现在我在他们的主页上读到

  1. 这仅包含发布库和
  2. 包含带有 lib 前缀的库,它们是静态库
  3. 有没有 lib 前缀的库,它们是动态库

例如 hdf5.lib 和 libhdf5.lib

我想动态链接。他们在主页上说

要在 Windows 上使用共享库,请指定 H5_BUILT_AS_DYNAMIC_LIB 编译定义。

这是什么意思???他们想让我做什么才能使用没有前缀的库进行动态链接?

c++ qt cmake hdf5

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

为什么插入用户定义的析构函数需要用户定义的复制构造函数

以下代码编译:

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

using namespace std;

class container
{
public:
    container(){}
    ~container(){}
};

class Ship
{
public:
    Ship(){}
    //Ship(const Ship & other){cout<<"COPY"<<endl;}
    //~Ship(){}

    std::unique_ptr<container> up;
};

Ship buildShip()
{
    Ship tmp;
    return tmp;
}

int main(int argc, char *argv[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是如果我们包含用户定义的析构函数~Ship(){},那么只有在我们还包含用户定义的复制构造函数时,代码才会编译Ship(const Ship & other){cout<<"COPY"<<endl;}

简而言之:

编译:

Ship(){}
//Ship(const Ship & other){cout<<"COPY"<<endl;}
//~Ship(){}
Run Code Online (Sandbox Code Playgroud)

编译:

Ship(){}
Ship(const Ship & other){cout<<"COPY"<<endl;}
~Ship(){}
Run Code Online (Sandbox Code Playgroud)

不编译:

Ship(){}
//Ship(const Ship & other){cout<<"COPY"<<endl;}
~Ship(){}
Run Code Online (Sandbox Code Playgroud)

为什么插入用户定义的析构函数需要用户定义的复制构造函数,为什么我们在上面的例子中需要一个复制构造函数呢?

我希望上面的例子中不需要复制构造函数,因为甚至无法复制unique_ptr.

c++ destructor copy-constructor unique-ptr c++11

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

基于范围的循环用于在C++中包含指针的自定义链表,仅返回对象

我们编写了一个自定义容器类,它应该能够支持基于for循环的rang,请参见此处:c ++ shell.运行该示例时,您可以看到它正在运行.

本质上,容器是指向Elements的指针链接列表:

    LinkedList ll;
    ll.push_back(new Element(1));
    ll.push_back(new Element(2));
    ll.push_back(new Element(3));

    for(LinkedList::iterator it = ll.begin(); it != ll.end(); ++it){
        cout << it->some_value << endl;
    }

    for(Element ele : ll) {
        cout << ele.some_value << endl;
    }
Run Code Online (Sandbox Code Playgroud)

将打印123123.我们不明白的是:为什么ele基于循环的范围不是指针?或者更好的为什么这不起作用:

for(Element * ele : ll) {
    cout << ele->some_value << endl;
}
Run Code Online (Sandbox Code Playgroud)

基本上我们希望通过std向量实现自定义链表的相同:

vector<Element*> vec{new Element(1),new Element(2),new Element(3)};
for(Element * ele : vec)
{
    cout<<ele->some_value<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ containers for-loop range c++11

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

Pandas Dataframe,更简单的语法可以按值的条件删除行

考虑一个 Pandas 数据框,例如:

df = pd.DataFrame([[0,2],[1,0],[7,99]],index=[3,4,8], columns = ["R1","R2"])
Run Code Online (Sandbox Code Playgroud)

给予:

   R1  R2
3   0   2
4   1   0
8   7  99
Run Code Online (Sandbox Code Playgroud)

当我想通过某个值的条件删除一行时,我要么使用

df = df.drop(df[df["R1"] == 1].index)
Run Code Online (Sandbox Code Playgroud)

或者

df = df.drop(df.index[np.where(df["R1"] == 1)[0]])
Run Code Online (Sandbox Code Playgroud)

或者

df = df.drop(df.loc[df['R1'] == 1].index)
Run Code Online (Sandbox Code Playgroud)

两个都超级麻烦。您知道实现此目的的更简单的语法吗?

例如,如果有类似 idrop 函数的东西,第二个选项会更易读:

df = df.idrop(np.where(df["R1"] == 1)[0])
Run Code Online (Sandbox Code Playgroud)

编辑:

我原以为这比df = df[df['R1'] != 1]仅仅删除一行的性能要低。(庞大的数据库...)

python performance filtering dataframe pandas

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

在2D std :: vector C上每个c ++ 11都不起作用?

初始化称为矩阵的2D矢量.

std::vector<std::vector<int>> matrix(512,std::vector<int>(512));
Run Code Online (Sandbox Code Playgroud)

现在我想调整它的大小:

这有效:

    matrix.resize(50);
    for(int i = 0; i<matrix.size() ; i++)
        matrix[i].resize(50);
Run Code Online (Sandbox Code Playgroud)

这不起作用:

    matrix.resize(50);
    for(auto ele : matrix)
        ele.resize(50);
Run Code Online (Sandbox Code Playgroud)

for(auto ele : container)在其他地方使用,我应该使用Microsoft Visual C++编译器12.0支持C++ 11.

c++ foreach vector c++11

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