小编gvg*_*zio的帖子

从'const type*'到'type*'的无效转换

我想通过类的构造函数存储指向另一个类的对象的指针.这样做的正确方法是什么?

如果我取代MyClass1* ptrconst MyClass1* ptr没有错误,但在这种情况下,我认为我不能改变ptr了.实现我想要的正确方法是什么?

example.cpp

class MyClass1{
    public:
        int a;
        int b;
};

class MyClass2{
    MyClass1* ptr;
    public:
        MyClass2(const MyClass1& obj){ptr = &obj;};
};

int main(int argc, char* argv[]){
    MyClass1 object1;
    object1.a = object1.b = 0;
    MyClass2 object2(object1);

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

通过g++ -o example example.cpp给我这个错误编译它

example.cpp:在构造函数'MyClass2 :: MyClass2(const MyClass1&)'中:

example.cpp:10:3​​7:错误:从'const MyClass1*'无效转换为'MyClass1*'[-fpermissive]

MyClass2(const MyClass1&obj){ptr =&obj;};

c++ pointers const reference

8
推荐指数
2
解决办法
8008
查看次数

图像处理中的归一化

图像处理中归一化的正确平均值是多少?我用谷歌搜索,但我有不同的定义.我将尝试详细解释每个定义.

核矩阵的规范化

如果将归一化称为矩阵(例如用于卷积滤波器的核矩阵),则通常将矩阵的每个值除以矩阵的值的总和,以使矩阵的值的总和等于1 (如果所有值都大于零).这很有用,因为图像矩阵和我们的核矩阵之间的卷积给出的输出图像的值介于0和原始图像的最大值之间.但是如果我们使用sobel矩阵(具有一些负值),那就不再适用了,我们必须拉伸输出图像,以使所有值都在0和最大值之间.

图像的标准化

我基本上找到了两个规范化的定义.第一个是"削减"过高或过低的值.即,如果图像矩阵具有负值,则将它们设置为零,并且如果图像矩阵具有高于最大值的值,则将它们设置为最大值.第二个是线性拉伸所有值,以使它们适合区间[0,max value].

image-processing normalization

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

COPY和ADD的`--chown`选项不允许变量。有解决方法吗?

在Dockerfile中,将目录复制为非root用户(例如$ UID 1000)的常用方法如下:

COPY --chown=1000:1000 /path/to/host/dir/ /path/to/container/dir
Run Code Online (Sandbox Code Playgroud)

但是,我想改用变量。例如

ARG USER_ID=1000
ARG GROUP_ID=1000
COPY --chown=${USER_ID}:${GROUP_ID} /path/to/host/dir/ /path/to/container/dir
Run Code Online (Sandbox Code Playgroud)

但这是不可能的。有解决方法吗?

请注意,我知道一个可能的解决方法是将目录复制为root,然后在目录上运行chown(变量与可以很好地配合使用RUN)。但是,仅在单独的命令中使用chown时,图像的大小会增加。

dockerfile docker-copy

6
推荐指数
1
解决办法
880
查看次数

使用初始化列表初始化字段并在构造函数内初始化它们之间有什么区别?

在一些教程(例如http://www.tutorialspoint.com/cplusplus/cpp_constructor_destructor.htm)上,我读到以下两个代码是等效的.

第一个代码:

class MyClass1{
    public:
        int a;
        int b;
        MyClass1(int a, int b) : a(a), b(b) {};
};
Run Code Online (Sandbox Code Playgroud)

第二个代码:

class MyClass2{
    public:
        int a;
        int b;
        MyClass2(int, int);
};

MyClass2::MyClass2(int a, int b){
    this->a = a;
    this->b = b;
}
Run Code Online (Sandbox Code Playgroud)

事实上,他们给了我相同的结果.但是,如果我使用const成员,我将无法再编译代码.

class MyClass1{
    public:
        const int a;
        const int b;
        MyClass1(int a, int b) : a(a), b(b) {};
};

class MyClass2{
    public:
        const int a;
        const int b;
        MyClass2(int, int);
};

MyClass2::MyClass2(int a, int b){
    this->a …
Run Code Online (Sandbox Code Playgroud)

c++ constructor const class initializer-list

4
推荐指数
1
解决办法
968
查看次数

KaTeX 字体大小

KaTeX的功能支持页面指​​出,用于字体尺寸的 KaTeX 单位的尺寸是相对于周围的 HTML 文本计算的。特别地,它指出

默认 G = 1.21,因为 KaTeX 字体大小通常是 1.21 × 周围字体大小。这个值可以被 HTML 页面的 CSS 覆盖。例如,在此页面上,G = 1.0。

现在的问题是,我应该在哪里更改 G 的值?

katex

4
推荐指数
1
解决办法
2350
查看次数

合并两个双端队列的最快方法

存在比这更快的合并两个双端队列的方法吗?

# a, b are two deques. The maximum length 
# of a is greater than the current length 
# of a plus the current length of b

while len(b):
  a.append(b.popleft())
Run Code Online (Sandbox Code Playgroud)

请注意,我对保留输入双端队列不感兴趣,我只对尽快合并一个双端队列感兴趣。

python merge deque

4
推荐指数
1
解决办法
2818
查看次数

在没有对象的向量中推回对象

我知道在向量中推回对象的正确方法是声明同一个类的对象并将其作为方法push_back的参数传递给它.即类似的东西

class MyClass{
    int a;
    int b;
    int c;
};

int main(){
    std::vector<MyClass> myvector;

    MyClass myobject;
    myobject.a = 1;
    myobject.b = 2;
    myobject.c = 3;

    myvector.push_back(myobject);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:可以推回仅传递对象值而不是另一个对象的对象吗?即类似的东西

class MyClass{
    int a;
    int b;
    int c;
};

int main(){
    std::vector<MyClass> myvector;

    int a = 1;
    int b = 2;
    int c = 3;

    myvector.push_back({a, b, c});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ class vector object push-back

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