小编lez*_*lon的帖子

如何在Windows上模拟CUDA

有没有办法可以从没有NVIDIA显卡的电脑上测试CUDA样品和代码?我正在使用Windows和最新版本的CUDA.

cuda

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

多态在没有指针/引用的情况下在C++中工作吗?

可能重复:
虚函数对象切片

让我们考虑一下:

#include <vector>
#include <iostream>
using namespace std;

struct A {
    virtual void do_it() { cout << "A" << endl; } 
};

struct B : public A {
    virtual void do_it()  { cout << "B" << endl; } 
};

int main() {
    vector<A> v;
    v.push_back(B());
    v[0].do_it(); // output is A
}
Run Code Online (Sandbox Code Playgroud)

哪个功能会被调用?如果不存在切片,基本上可以使用不带指针的多态性吗?

c++ object-slicing

7
推荐指数
4
解决办法
2088
查看次数

让 lambda 可变是一种不好的做法吗?

以下 lambda 无法编译:

auto l = [a = std::vector<int>() ]  {
                        a.resize(1);
                    } ;
Run Code Online (Sandbox Code Playgroud)

这是因为由值 a 捕获的变量自动被键入为 const。以下 lambda 应该可以编译(尽管在 Visual Studio 2019 上显然不能编译):

 auto l = [a = std::vector<int>() ] mutable {
                        a.resize(1);
                    } ;
Run Code Online (Sandbox Code Playgroud)

首先自动将 a 转换为 const 向量的基本原理是什么?感觉我强制 lambda 可变是做错了什么。这样做是为了防止在我想多次执行 lambda 时意外修改闭包参数吗?

c++ lambda

7
推荐指数
0
解决办法
376
查看次数

主成分分析问题

我不确定这是正确的地方,但我在这里:

我有一个高分辨率的300张图片数据库.我想在这个数据库上计算PCA,到目前为止,这就是我所做的: - 将每个图像重塑为单个列向量 - 创建所有数据的矩阵(500x300) - 计算平均列并将其减去我的矩阵,这给了我X - 计算相关性C = X'X(300x300) - 找到C的特征向量V和本征值D. - PCA矩阵由X V*D ^ -1/2给出,其中每列是a主成分

这很棒,给了我正确的组件.

现在我正在做的是在同一个数据库上进行相同的PCA,除了图像的分辨率较低.

在此输入图像描述

这是我的结果,左边的低分辨率和右边的高分辨率.您是否可以看到它们中的大多数相似但有些图像不一样(我圈出的图像)

有什么方法可以解释这个吗?我需要我的算法具有相同的图像,但是一个设置在高分辨率,另一个设置在低分辨率,我怎么能实现这一点?

谢谢

math matlab image-processing linear-algebra pca

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

什么是typedef int var [1]; 做?

我遇到了以下代码:

typedef int var[1]; // or var[3]
Run Code Online (Sandbox Code Playgroud)

它实际上做了什么?我不明白下标添加了什么,因为现在我可以为int定义"var"

c++ typedef

6
推荐指数
2
解决办法
1658
查看次数

这个bitset :: count()的实现如何工作?

以下是std::bitset::countMSVC 2010 的实现:

size_t count() const
    {   // count number of set bits
    static char _Bitsperhex[] = "\0\1\1\2\1\2\2\3\1\2\2\3\2\3\3\4";
    size_t _Val = 0;
    for (int _Wpos = _Words; 0 <= _Wpos; --_Wpos)
        for (_Ty _Wordval = _Array[_Wpos]; _Wordval != 0; _Wordval >>= 4)
            _Val += _Bitsperhex[_Wordval & 0xF];
    return (_Val);
    }
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这是如何工作的吗?诀窍是_Bitsperhex什么?

c c++ stl

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

仅使用公开的C api运送C ++ dll

我正在编写一个API仅打算用作C的软件,因为将C代码与其他软件/客户端链接起来很容易。

但是,实际的程序代码是使用所有常见的C ++功能(如异常,STL等)在C ++中完成的。

导出的API /标头本身将使用带有export "C"关键字的纯C语言编写。

如果我打算将此dll交付给不了解C ++的用户,该怎么办?通常,他们不必担心实际代码是C ++的事实,只需要知道如何通过头文件链接C代码即可。有人告诉我,我应该确保libstd是静态链接的,这可能并非在所有平台上都是可能的(会有linux和Windows构建)。例外情况如何?等等

c c++ dll

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

VS2012和VS2015之间的浮动/双转换差异

我有以下代码:

 float a = 0.02f * 28f;
 double b = (double)a;
 double c = (double)(0.02f * 28f);
 Console.WriteLine(String.Format("  {0:F20}",  b));
 Console.WriteLine(String.Format("  {0:F20}", c));
Run Code Online (Sandbox Code Playgroud)

然而,无论是从VS2012还是VS2015(均具有"标准"设置)编译,它都会返回不同的结果

在VS2012

0,56000000238418600000
0,55999998748302500000
Run Code Online (Sandbox Code Playgroud)

在VS2015中:

0,56000000238418600000
0,56000000238418600000
Run Code Online (Sandbox Code Playgroud)

VS2012解散:

           float a = 0.02f * 28f;
0000003a  mov         dword ptr [ebp-40h],3F0F5C29h 
            double b = (double)a;
00000041  fld         dword ptr [ebp-40h] 
00000044  fstp        qword ptr [ebp-48h] 
            double c = (double)(0.02f * 28f);
00000047  fld         qword ptr ds:[001D34D0h] 
0000004d  fstp        qword ptr [ebp-50h] 
Run Code Online (Sandbox Code Playgroud)

VS2015解散:

            float a = 0.02f * 28f;
001E2DE2 …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio visual-studio-2012 visual-studio-2015

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

用于在笔记本中显示“漂亮”数据框的 Qgrid 替代方案

我想使用一些库来更好地在笔记本中显示 pandas 数据框(即允许对列、过滤器等进行排序)。

Qgrid似乎是一个足够好的选择,并且似乎可以满足我的需求。然而,最新的提交已经有 2 年了,所以我认为它不再被维护了。是否有更“标准”且最新的库可供使用?

请注意,我正在寻找不需要另一个后端(例如 Flask)来运行计算的东西,而只是像 QGrid 这样的东西,它是 100% JS 组件

python pandas jupyter-notebook qgrid

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

如果没有等待完成,BackgroundService 永远不会启动/停止

在 ASP.NET Core 上,我观察到一种奇怪的行为,这实际上是在BackgroundService 中报告的,未关闭,stoppingToken 从未使用 .net core 通用主机设置,但从未找到根本原因

我正在创建以下BackgroundService任务,注册为HostedService

唯一的方法是这样实现的:

 protected override async Task ExecuteAsync(CancellationToken cancellationToken)
 {
     while (!cancellationToken.IsCancellationRequested )
         Console.WriteLine("running");
 }
Run Code Online (Sandbox Code Playgroud)

如果我尝试Ctrl+C或杀死-15这个,它不会停止

如果我像这样更改函数:

protected override async Task ExecuteAsync(CancellationToken cancellationToken)
{
    while (!cancellationToken.IsCancellationRequested )
    { 
        Console.WriteLine("running");
        await Task.Delay(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是有效的:如果我尝试Ctrl+C该程序,则会设置取消令牌,然后退出。

如果我返回到不起作用的版本并暂停它,我会看到即使我处于 ExecuteAsync 方法中,它下面的框架也是 StartAsync(),在这种情况下它永远不会完成!

我看到的 StartAsync() 代码(来自框架)是这样的:

public virtual Task StartAsync(CancellationToken cancellationToken)
{
    // Store the task we're executing
    _executingTask = ExecuteAsync(_stoppingCts.Token); …
Run Code Online (Sandbox Code Playgroud)

c# background-service async-await asp.net-core ihostedservice

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