如何在C++中附加一个整数(带整数)

Tob*_*oby 3 c++ integer append

我想知道是否有人能告诉我如何在C++中附加一个整数(带有另一个整数).基本上,如果我有一个这个值为67的int,我怎么用数字4附加它所以整数现在是674?提前致谢!

hus*_*sik 9

首先乘以10乘以秒数的幂,再加上另一个.

示例:63和5

63*10=630
630+5 =635
Run Code Online (Sandbox Code Playgroud)

示例:75和34

75*100=7500
7500+34=7534
int i1=75;
int i2=34;
int dn=ceil(log10(i2+0.001));     //0.001 is for exact 10, exact 100, ...
int i3=i1*ceil(pow(10,dn)); <---- because pow would give 99.999999(for some optimization modes)
i3+=i2;
Run Code Online (Sandbox Code Playgroud)

编辑:字符串版本需要2个int到str的转换(这很慢)和1个字符串连接(不是很快)和1个str到int的转换(这很慢).上转换需要2个加法,1个对数,2个最大值,1个幂,1个乘法,所有这些都可以在cpu中完成而不需要触及主存储器来获取/设置子步骤的数据,这肯定比字符串版本的延迟更少.如果编译器设计将3-4个字符串存储在sse寄存器中,那么两者都将争夺性能.因为当一个人忙于计算"功率"功能时,其他人将忙于从sse中提取字符串并逐个放入必要的寄存器并通过开始加法和乘法在另一个寄存器上构建.功率(10,x)功能可以交易10*10*10 .... x倍,因此纯数学版本再次变得更快.

如果你需要它的可读性,那么eq-的答案是最好的.

  • 小心`log10(10)`正好是1,所以结果可能不正确.也许是'ceil(log10(i1 + .1))` (4认同)

eq-*_*eq- 8

int appended = std::stoi(std::to_string(i1) + std::to_string(i2));
// error checking left as an exercise
Run Code Online (Sandbox Code Playgroud)