小编UpA*_*dam的帖子

什么时候 f != f 为真?

任何人都可以详细说明syscalls/js为什么在第 57 行有一个声明

if f != f { ... }
Run Code Online (Sandbox Code Playgroud)

f是类型float64)。

这怎么可能?就像一个语句时,可以i != itruego

syntax go

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

如何将'this'指针用作成员函数的参数

我有这个简单的课程

class foo {
public:
  void func() const;
  void func2();
};

void foo::func() const {}
void foo::func2() {}

int main() {
  const foo f;
  f.func();
  f.func2();
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我收到此消息:

错误:将'const foo'作为'void foo :: func2()的'this'参数传递'丢弃限定符[-fpermissive]

我理解使用const对象的非const成员,我的问题是'this'指针如何用作func2的参数?

c++

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

在 MacOS(Catalina 及更高版本)上将默认 shell 从 zsh 更改为 bash

bash在 MacOS 上使用 shell 感觉很舒服。但卡特琳娜将其替换为zsh.

为什么?我可以把它切换回来吗?

如果是这样,怎么办?

这样做有意义吗?有什么问题吗?

macos bash shell zsh

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

是否有任何理由将抽象类的构造函数标记为显式

在下面的示例中,由于抽象方法,我的类是抽象的run。我还有一个来自另一种类型的构造函数。我总是将只有 1 个参数的构造函数标记为explicit,除非我希望隐式强制转换可用。但是,在抽象类的特殊情况下,有什么理由证明它是合理的吗?

class Foo
{
  public:
    virtual void run() = 0; // Then the class is abstract
    explicit Foo(Bar const& bar);
};
Run Code Online (Sandbox Code Playgroud)

注意:我的问题纯粹是技术性的:有没有办法在抽象类的构造函数上使用或不使用显式关键字来实现不同的行为?

c++ abstract-class explicit-constructor

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

扫描目录的 C++ 程序中的分段错误

这是我的程序,但在编译时我收到“分段错误”消息,没有任何警告。

#include <string>
#include <iostream>
#include <dirent.h>
#include <sys/stat.h>
#include <cstring>

int is_file(char* path) {
    struct stat s;
    if (( stat(path,&s) == 0 ) && ( s.st_mode & S_IFREG )) return 1; else return 0;
}

int main()
{
    DIR *dir;
    struct dirent *ent;
    char path[] = "../";
    if ((dir = opendir (path)) != NULL) {
      /* print all the files and directories within directory */
      while ((ent = readdir (dir)) != NULL) {
            char* name = strcat(path, ent->d_name);
            if …
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault

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

如何将浮动对象转换为列表?

我正在编写一个脚本来将一个数字返回给一定数量的有效数字.我需要将浮动转换为列表,以便我可以轻松更改数字.这是我的代码:

def sf(n,x):
    try:
        float(n)
        isnumber = True
    except ValueError:
        isnumber = False
    if isnumber == True:
        n = float(n)
        n = list(n)
        print(n)
    else:
        print("The number you typed isn't a proper number.")
sf(4290,2)
Run Code Online (Sandbox Code Playgroud)

这会返回错误:

Traceback (most recent call last):
File "/Users/jacobgarby/PycharmProjects/untitled/py package/1.py", line 29, in <module>
sf(4290,2)
File "/Users/jacobgarby/PycharmProjects/untitled/py package/1.py", line 25, in sf
n = list(n)
TypeError: 'float' object is not iterable
Run Code Online (Sandbox Code Playgroud)

这个错误意味着什么,我怎么能阻止它发生?

python python-3.x

0
推荐指数
2
解决办法
9728
查看次数

将双指针转换为int指针

当我打印b并且d他们都持有相同的地址(地址a).那么为什么*b打印0*d打印5?

 void main() 
 {
    double a = 5.0;
    double *d = &a;
    int *b = (int*)d;
    int a1 = 10;
    cout << "Val of D : " << d << " Address of d :" << &d
         << " Value of *d :" << *d << endl;
    cout << "Val of B : " << b << " Address of B :" << &b
         << " Value of …
Run Code Online (Sandbox Code Playgroud)

c++ pointers type-punning

0
推荐指数
2
解决办法
4795
查看次数

加法和减法不适用于犰狳稀疏矩阵

我不明白为什么+-操作在犰狳稀疏矩阵上不起作用,而*/却正常工作。(根据文档,+并且-应该也可以链接)。

\n\n
#include <iostream>\n#include <stdlib.h>\n#include <math.h>\n#include<armadillo>  \n\nusing namespace std;\nusing namespace arma;\n\nint main(int argc, char** argv) {\n    sp_mat A(5,6);\n    A(0,0) = 1;\n    A(1,0) = 2;\n    cout << 2 + A << endl;\n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

请参阅下面的错误。

\n\n
In file included from /usr/include/c++/4.8/bits/stl_algobase.h:67:0,\n             from /usr/include/c++/4.8/bits/char_traits.h:39,\n             from /usr/include/c++/4.8/ios:40,\n             from /usr/include/c++/4.8/ostream:38,\n             from /usr/include/c++/4.8/iostream:39,\n             from demo.cpp:1:\n   /usr/include/c++/4.8/bits/stl_iterator.h:327:5: note:            template<class _Iterator> typename std::reverse_iterator<_Iterator>::difference_type std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)\n     operator-(const reverse_iterator<_Iterator>& __x,\n     ^\n/usr/include/c++/4.8/bits/stl_iterator.h:327:5: note: …
Run Code Online (Sandbox Code Playgroud)

c++ armadillo

0
推荐指数
1
解决办法
1653
查看次数

多个赋值给python字典

假设您有两个字符串列表,第一个是keys字典,第二个是values相应位置的键.所以它是这样的:

>>print keys
['key1', 'key2', ..., 'keyN']
>>print values
['value1', 'value2', ..., 'valueN']
Run Code Online (Sandbox Code Playgroud)

用这行代码:

dic = dict.fromkeys(keys)
Run Code Online (Sandbox Code Playgroud)

我把钥匙分配给了我的字典.所以我的输出现在是这样的:

>>print dic
{'key1': None, 'key2':None, ..., 'keyN': None}
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式做我用键做的事情,但也有值?但是这次只将值一个一个地存储到字典中?所以我的目标输出是这样的:

>>print dic
{'key1':'value1', 'key2':'value2', ..., 'keyN':'valueN'}
Run Code Online (Sandbox Code Playgroud)

python dictionary

0
推荐指数
1
解决办法
403
查看次数

将结构复制到数组的一个元素中

在我正在编写的代码中,我需要执行以下操作:

  1. 创建一个映射,其中每个值都是固定大小的缓冲区
  2. 使用 memcpy 用一些本地定义的对象填充映射的一个值的一个元素(即数组的一个元素本身就是映射的值)

以下代码是该概念的一个小示例:

#include <iostream>
#include <map>
#include <cstring>

int main()
{
    struct hdr {
        int cpi_length = 42;
    } ;

    void* this_hdr = new hdr;
    std::map<int, hdr(*)[20]> SP;
    std::cout << sizeof(hdr) << std::endl; // "4"
    std::cout << sizeof(this_hdr) << std::endl; // "4"
    std::cout << sizeof(SP[0][0]); // "80"
    std::memcpy(SP[0][0], this_hdr, sizeof(hdr)); // "Error: access violation"
    std::cout << SP[0][0]->cpi_length;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这给我带来了两个问题:1)如何解决尝试使用 memcpy 时的运行时错误,2)一旦解决了错误,我如何确保此代码将执行我所描述的操作?

如命令所示sizeof,被复制的结构实例的大小与结构本身相同,并且(显然)比它被复制到的数组元素的大小小得多。那么为什么会出现访问冲突呢?应该有足够的空闲空间。

我知道为什么我会memcpy在这个实例中使用,为什么我要使用缓冲区指针而不是向量等,这可能看起来很愚蠢。这只是一个可重现的示例,请理解在实际代码中我仅限于这些实现选择。现在,我不再假设我只是犯了一些简单的错误,例如在引用/取消引用指针时混淆了语法。

c++ dictionary pointers memcpy

0
推荐指数
1
解决办法
78
查看次数

在开发分支中保留提交历史记录,但仅合并主分支中的提交

我想保留开发中的提交历史记录,但只保留 main 中的合并提交。我认为挤压合并可以做到这一点,但显然它会产生这里描述的问题:挤压合并后,提交历史记录仍然显示在合并请求中作为分支之间的差异,即使它们在那时应该是相同的

还有其他方法可以实现此目的吗?也许我不需要在开发中保留提交,但我希望能够在我们公司的 bitbucket 帐户上浏览它们。

git merge

0
推荐指数
1
解决办法
51
查看次数

unsigned int的最大值?

我写了一个程序来找到使用类型的最后一个Fibonacci数unsigned int.它是1836311903,但我认为最大值为unsigned intIS 65535.发生什么了?

while(true)
    {
        sequence[j] = sequence[j-1] + sequence[j-2];
        if(sequence[j-1]>sequence[j]) break;
        j++;
    }

    printf("%d", sequence[j-2]);
Run Code Online (Sandbox Code Playgroud)

c++ math int unsigned

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