小编iou*_*vxz的帖子

C++为什么uint64_t和uint8_t上的按位运算符〜会返回不同的类型?

#include <stdio.h>
#include <iostream>

int main()
{
    using namespace std;
    uint64_t a = 3;
    if (uint64_t(~a) == (~a))
        cout << "right" << endl;//right
    else
        cout << "wrong" << endl;
    cout << sizeof(~a) << endl;//8

    uint8_t b = 3;
    if (uint8_t(~b) == (~b))
        cout << "right" << endl;
    else
        cout << "wrong" << endl;//wrong
    cout << sizeof(~b) << endl;//4
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

~uint8_t返回int值,但〜uint64_t返回uint64_t.

这是未定义的行为吗?

c++ bit-manipulation undefined-behavior

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

给定一个开始和目标,如何找到导航网格中最短的方式?

我用google搜索"导航网格上的A*算法"只是为了得到错误的估算g值的方法,就像这样

在此输入图像描述

或这个 在此输入图像描述

通过总计蓝线段的长度,我们得到g值,但它被高估了(g值应该被低估).此算法将返回优化路径,但不保证最短路径.

我能想到的唯一方法是根据导航网格绘制可见性图.但这会花费太多内存.

在此输入图像描述

有没有其他方法来计算导航网格中的最短路径?

c++ graph a-star path-finding navmesh

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

C++为什么在我的类中添加析构函数会使我的类无法移动?

编译器提醒我,我正在使用已删除的函数. https://ideone.com/3YAIlA

#include <memory>
using namespace std;
class foo
{
public:
    unique_ptr<int> p;
    ~foo()
    {

    }
};
int main()
{
    foo a, b;
    a = move(b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译信息

prog.cpp: In function 'int main()':
prog.cpp:15:4: error: use of deleted function 'foo& foo::operator=(const foo&)'
  a = move(b);


prog.cpp:3:7: note: 'foo& foo::operator=(const foo&)' is implicitly deleted because the default definition would be ill-formed:
 class foo


prog.cpp:3:7: error: use of deleted function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; …
Run Code Online (Sandbox Code Playgroud)

c++ grammar move-semantics

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

如何解决函数GsDriverEntry中引用的LNK2019未解析外部符号DriverEntry?

我正在编译这个项目https://github.com/namazso/hdd_serial_spoofer

我收到上面的错误信息,我该如何解决?我正在使用vs 2017和wdk 10.

(必须在发布时编译,不支持调试模式.在这个项目中没有DriverEntry函数,hwid.cpp中的EntryPoint(void*ntoskrn,void*image,void*alloc)函数是真正的入口点.)

我做了很多研究,但仍未能使其工作.我是内核模式驱动程序开发的菜鸟.

windows driver visual-studio kmdf

5
推荐指数
2
解决办法
1090
查看次数

如果 CImage::Load 方法失​​败会发生什么?

如果CImage尝试加载另一个图像并且加载方法失败,它的像素会改变吗?

c++ api mfc atl

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

快速交叉运营的数据结构?

随机选择两个集合,两个集合都包含不同的密钥(一个密钥可能属于多个集合,一个集合永远不能包含重复的密钥).

返回一个整数,表示属于两个组的键数.

例如,intersect({1,2,3,4},{3,4,5})返回2.

我只需要交叉点的大小.我不需要确切地知道交叉点中哪些键.

是否有任何数据结构在不到O(n)的时间内支持这种操作?

编辑:

读取数据确实需要O(n)时间,但这不会导致您不能在少于O(n)时间内完成交叉操作的结论.

想象这个场景:

我有N套,每套包含100把钥匙.我读了它们,那是N*100次操作.现在我想知道女巫对有最大的交集,即O(N²)交叉操作.所以我想减少交叉操作的复杂性.我不是真的关心读取和构建集合所花费的时间,最多为N*100,这与O(N²)交叉操作无关.

请注意,通过执行少于O(N²)交叉操作,您无法找到具有最大交点的一对集合,我可以证明这一点.您必须执行所有交叉操作.

(他的基本思想是,让我们想象一个完整的图,有N个顶点,每个顶点代表一个集合,Nx(N-1)/ 2个边,每个代表连接对的交集.现在给每个边不为所有你想要的negetive weight(代表交叉点大小),我总是可以构造N个满足那些Nx(N-1)/ 2边缘权重.这证明了我的主张.)

algorithm intersection time-complexity set-operations data-structures

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

如何加速这个 LUT 查找的直方图?

首先,我有一个数组int a[1000][1000]。所有这些整数都在 0 到 32767 之间,它们是已知的常量:它们在程序运行期间永远不会改变。

其次,我有一个数组 b[32768],它包含 0 到 32 之间的整数。我使用这个数组将 a 中的所有数组映射到 32 个 bin:

int bins[32]{};
for (auto e : a[i])//mapping a[i] to 32 bins.
    bins[b[e]]++;
Run Code Online (Sandbox Code Playgroud)

每次,数组 b 将用一个新数组初始化,我需要将数组 a 中的所有 1000 个数组(每个包含 1000 个整数)散列到 1000 个数组,每个数组包含 32 个整数,表示有多少整数落入其每个 bin 。

int new_array[32768] = {some new mapping};
copy(begin(new_array), end(new_array), begin(b));//reload array b;

int bins[1000][32]{};//output array to store results .
for (int i = 0; i < 1000;i++)
    for (auto e : a[i])//hashing a[i] …
Run Code Online (Sandbox Code Playgroud)

c++ optimization simd histogram

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

Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?

我使用的是vs2015和wdk10,我可以在空项目中使用随机。

#include <random>
std::default_random_engine eng;//works fine .
Run Code Online (Sandbox Code Playgroud)

但是当我创建一个空的内核模式驱动程序项目时,我无法在其中使用随机。

#include <random>
std::default_random_engine eng;//namespace "std" has no member "default_random_engine"
Run Code Online (Sandbox Code Playgroud)

其他标准库,如向量元组也不起作用,所有这些都提醒我命名空间“std”没有成员 XXX(向量、元组等)

我该如何解决这个问题?

c++ driver visual-studio kmdf c++11

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

如何暂停PyCharm社区中的脚本执行?

我写了这段代码并尝试调试它:

from time import *

for i in range (100):
    sleep(1)
    print(i)
Run Code Online (Sandbox Code Playgroud)

我首先在调试模式下运行此脚本,并尝试通过单击暂停按钮暂停它,但暂停按钮根本不起作用,它只是继续打印新数字.

然后我直接运行这个脚本(不是在调试模式下),暂停确实停止pycharm打印新数字,但是脚本实际上仍然在后台运行,当我恢复脚本时,它打印了很多数字全部突然.

那么我怎样才能正确暂停脚本执行?

我在一个全新的Windows 7中安装了pycharm和python,它仍然表现得像这样.

停止和重新运行按钮完美运行,断点也是如此.但暂停按钮永远不会起作用.

python pycharm

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

C++为什么反转路径是非法的?

#include <algorithm>
#include <filesystem>
int main()
{
    std::experimental::filesystem::path str("fffff/aaaa/.");    
    std::reverse(str.begin(),str.end());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用vs2015,上面的代码不能编译,但我仍然可以反转一个字符串.

#include <algorithm>
#include <filesystem>
int main()
{
    std::string str("fffff/aaaa/.");    
    std::reverse(str.begin(),str.end());
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么?

c++ algorithm

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