小编sal*_*eph的帖子

从std :: unordered_set <char>有效构造std :: string

我有一个无序的字符集

std::unordered_set<char> u_setAlphabet;
Run Code Online (Sandbox Code Playgroud)

然后我想从集合中获取std :: string的内容.我的实现现在看起来像这样:

std::string getAlphabet() {
    std::string strAlphabet;
    for (const char& character : u_setAlphabet)
        strAlphabet += character;
    return strAlphabet;
}
Run Code Online (Sandbox Code Playgroud)

这是解决此任务的好方法吗?对于大型u_setAlphabet(多个reallocs?),对字符串添加signle chars似乎不是最佳选择.还有其他方法吗?

c++ string unordered-set c++11

6
推荐指数
3
解决办法
375
查看次数

GCC在将整数转换为浮点数时生成的FPU操作

我想在C中对FPU执行除法(使用整数值):

float foo;
uint32_t *ptr1, *ptr2;
foo = (float)*(ptr1) / (float)*(ptr2);
Run Code Online (Sandbox Code Playgroud)

NASM中(来自通过GCC编译的对象),它具有以下表示:

    mov     rax, QWORD [ptr1]
    mov     eax, DWORD [rax]
    mov     eax, eax
    test    rax, rax
    js      ?_001
    pxor    xmm0, xmm0
    cvtsi2ss xmm0, rax
    jmp     ?_002

?_001:
    mov     rdx, rax
    shr     rdx, 1
    and     eax, 01H
    or      rdx, rax
    pxor    xmm0, xmm0
    cvtsi2ss xmm0, rdx
    addss   xmm0, xmm0
?_002:
    mov     rax, QWORD [ptr2]

; ... for ptr2 pattern repeats
Run Code Online (Sandbox Code Playgroud)

这个"黑魔法"下的是什么?_001是什么意思?不仅cvtsi2ss足以从整数转换为浮点数吗?

c assembly gcc x86-64 fpu

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

标签 统计

assembly ×1

c ×1

c++ ×1

c++11 ×1

fpu ×1

gcc ×1

string ×1

unordered-set ×1

x86-64 ×1