我有一个无序的字符集
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中对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足以从整数转换为浮点数吗?