小编Muh*_*mad的帖子

numeric_limits最低和最低成员函数

numeric_limits<T>::min();
numeric_limits<T>::lowest();
Run Code Online (Sandbox Code Playgroud)

两个函数返回的值有什么不同?

c++ stl standard-library c++11

19
推荐指数
2
解决办法
5096
查看次数

const对象和const构造函数

有没有办法知道对象是const对象还是常规对象,例如考虑以下类

class String
{
   String(const char* str);
};
Run Code Online (Sandbox Code Playgroud)

如果用户String从那时创建一个const对象,没有理由复制传递的本机字符串,并且由于他不会对其进行任何操作,他唯一要做的就是获取字符串大小,字符串搜索和其他不会改变的函数字符串.

c++

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

模板转换

我有两个类int_t,uint_t有符号类型和无符号类型:

template <typename lo_t> struct uint_t;

template <typename hi_t, typename lo_t>
struct int_t
{
    lo_t lo;
    hi_t hi;

    int_t() : hi(0), lo(0) {}
    int_t(int value) : lo(value), hi(value<0? -1: 0) {}
    int_t(unsigned value) : lo(value), hi(0) {}

    int_t(const uint_t<lo_t>&);

    //template<typename ty_a, typename ty_b> int_t(const int_t<ty_a, ty_b>&);
};

template <typename hi_lo>
struct uint_t
{
    hi_lo lo, hi;

    uint_t() : lo(0), hi(0) {}
    uint_t(int value) : lo(value), hi(value<0? -1: 0) {}
    uint_t(unsigned value) : lo(value), hi(0) {}

    template<typename …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

Asp.net core 3.0 nuget 包在哪里?

我去 Nuget.org 获取 Microsoft.AspNetCore.Mvc.Core 3.0.0 但没有找到它,微软有什么理由不推送这些包吗?

asp.net-core

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

float256中指数和分数的大小

你最好看看桌子,了解我想要的东西:

?????????????????????????????????????????????
?  name  ?  sign  ?  exponent  ?  fraction  ?
?????????????????????????????????????????????
?float16 ?    1   ?      5     ?     10     ?
?????????????????????????????????????????????
?float32 ?    1   ?      8     ?     23     ?
?????????????????????????????????????????????
?float64 ?    1   ?     11     ?     52     ?
?????????????????????????????????????????????
?float128?    1   ?     15     ?    112     ?
?????????????????????????????????????????????
?float256?    1   ?    ????    ?    ????    ?
?????????????????????????????????????????????
?float512?    1   ?    ????    ?    ????    ?
?????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我的问题是如何计算指数和分数的位数给定总位数,如256,512或1024.

floating-point

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

从浮点数转换为自定义数字类型

我已经创建了自己的固定类型整数类型,并且该库适用于许多编译器和平台,唯一需要解决的问题是从内置浮点类型转换为我的类型.

该浮点类型可有小尾数但随着指数沿着它可能有很大的价值,如果我选择投float,double或者long doublelong longunsigned long long可能发生截断.

如果编译器使用IEEE-754规范,那么提取尾数和指数很容易,但如果编译器使用其他格式则会怎样.

所以,我的问题是:是否有任何通用算法允许我仅使用语言功能从浮点数中提取完整值?

谢谢

c++ floating-point type-conversion

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

编译器在编译时如何检测数字溢出?

编译器将源代码作为字符串处理,所以在C++中,例如当它鼓励类似于unsigned char x = 150;它的类型限制的语句时unsigned char必须在0和之间的范围内255.

我的问题是,数字150仍然是字符串,编译器使用什么算法比较数字序列 - 150在这种情况下 - 与类型限制?

我为一个十进制,八进制,十六进制和小端二进制的类型'int'做了一个简单的算法,但我不认为编译器会这样做以检测数字溢出.

我制作的算法用C++编码:

typedef signed char int8;
typedef signed int  int32;

#define DEC  0
#define HEX  1
#define OCT  2
#define BIN  3

bool isOverflow(const char* value, int32 base)
{
    // left-most digit for maximum and minimum number
    static const char* max_numbers[4][2] =
    {
        //                 INT_MAX                           INT_MIN
        {                       "2147483647",                       "2147483648" }, // decimal
        {                         "7fffffff",                         "80000000" }, // hexadecimal …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-theory

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

这是sqrt函数中的一个错误

我创建了一个应用程序来计算64位范围内的素数,所以当我尝试使用i的sqrt函数计算64位数的平方根时,math.h发现答案是不准确的,例如当输入是~0ull答案应该是~0u但是我得到的是0x100000000哪个不对,所以我决定用汇编x86语言创建我自己的版本,看看这是不是一个bug,这是我的函数:

inline unsigned prime_isqrt(unsigned long long value)
{
    const unsigned one = 1;
    const unsigned two = 2;

    __asm
    {
        test dword ptr [value+4], 0x80000000
        jz ZERO
        mov eax, dword ptr [value]
        mov ecx, dword ptr [value + 4]

        shrd eax, ecx, 1
        shr  ecx, 1
        mov  dword ptr [value],eax 
        mov  dword ptr [value+4],ecx

        fild value
        fimul two
        fiadd one
        jmp REST
ZERO: 
        fild value
REST: 
        fsqrt
        fisttp value
        mov …
Run Code Online (Sandbox Code Playgroud)

c++ x86 assembly standard-library x87

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

UTF-16保留代码点

为什么UTF-16在UCS数据库中有保留范围?

UTF-16只是一种使用一个或两个表示字符标量值的方法unsigned 16-bits,这些值的布局不应与字符标量值相关,因为我们应该应用一些算法来从这种表示中获取实际的字符标量值.

假设保留范围D800-DBFF并且DC00-DFFF不在UCS数据库中保留,并且还有另一种UTF-16表示,它可以表示0-7FFF单个范围内的所有字符unsigned 16-bits,当设置高位时,则跟随另一个16位.比特,对于字节顺序标记,我们将保留两个可能的值,就是这样.

如果我错了,你可以向我解释一下.

谢谢

unicode utf-16 codepoint

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

c ++数组和动态内存

可能重复:
delete []如何知道它是一个数组?(C++)
delete []"如何"知道操作数数组的大小?

假设我们有以下课程

class Data
{
public:
    Data() : i(new int) { *i = 0; }
    ~Data() { delete i; }

private:
    int *i;
};
Run Code Online (Sandbox Code Playgroud)

现在我们创建100个Data类型元素的数组

Data* dataArray = new Data[100];
Run Code Online (Sandbox Code Playgroud)

我们知道operator new会为100个对象调用Data构造函数,因为它知道创建了多少个对象,现在让我们删除这个数组,如果我们说delete dataArray只调用第一个对象的析构函数,即使我们知道100个对象的内存我们被释放 - 将导致内存泄漏 - 并且因为它们被分配为一个块,但是如果我们说delete[] dataArray将调用100个对象的析构函数,但这是一个dynmaic内存并且我没有指定那里有多少个对象我知道数组没有任何开销来知道其中有多少对象,那么运行时环境如何知道在释放内存之前要销毁的对象数量?

c++ delete-operator

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

使用预先计算的素数筛选埃拉托色尼

我已经可以存储在所有32位质数unsigned int我想用它来生成一些64位的素数。即使在逻辑和编译方面进行了优化,使用试验除法也太慢了。

我正在尝试修改埃拉托色尼筛以使用预定义列表,如下所示:

  1. 在数组 A 中,从 2 到 4294967291
  2. 在数组 B 中从 2^32 到 X 加 1
  3. 找到 C 是当前素数的第一个倍数。
  4. 从 C 标记并通过当前素数跳转到 X。
  5. 去 1。

问题是第 3 步使用模数来找到素数倍数,这样的操作是我没有使用跟踪除法的原因。

有没有更好的方法来实现第 3 步或整个算法。

谢谢你。

c++ algorithm primes sieve-of-eratosthenes

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

C++ 编译时的静态字符数组大小

我知道这个问题被问了很多次,我没有问如何做到这一点,因为我是在编译时这样做的。我的问题是它是如何工作的,因为这是我不明白的。

当将 a 传递char[]给函数时,它会丢失其信息并变成char*,因此我们无法在编译时使用模板获取字符数组的大小,所以我尝试传递字符串本身并且它有效:

template <int N> inline int arr_len(const char (&)[N]) { return N - 1; }

#define STR "this is an example!"

const char *str_ptr = STR;

int main()
{
  int array_size = arr_len(STR);
}
Run Code Online (Sandbox Code Playgroud)

我使用 VC++ 2008、Intel C++ 12 和 GCC 4.7 测试了这段代码,它可以工作。

通过传递字符串本身,编译器将其视为const char[]- 至少我是这么认为 - 并且他能够获取字符串大小,这怎么可能?

c++

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