c++ - insert in string的效率

标签 c++ string performance

我正在尝试为比 long long 更大的非常大的整数编写这个自定义加法类。我正在研究的一种方法是将整数保留为字符串,然后将字符转换为它们的 int 组件,然后添加每个“列”。我正在考虑的另一种方法是将字符串拆分为多个字符串,每个字符串都是 long long 的大小,然后使用字符串流将其转换为 long long 添加然后重新组合。

无论如何,我发现加法最容易反向完成以允许结转数字这一事实。在这种情况下,我想知道字符串插入方法的效率。似乎因为一个字符串是一个字符数组,所以所有的字符都必须移动一个。所以它会有所不同,但效率似乎是 O(n),其中 n 是字符串中的字符数。

这是正确的,还是只是天真的解释?

编辑:我现在对我的问题有了答案,但我想知道一个更有效的相关主题,将字符串插入流然后提取到 int。或者做 10^n*char1+10^n-1*char2...等等?

最佳答案

据我所知,你是对的。 String 的 C++ 实现将在 O(n) 时间内执行插入。它将字符串视为字符数组。

对于您的数字实现,为什么不将数字存储为整数数组并仅转换为字符串以供输出?

关于c++ - insert in string的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8785205/

相关文章:

c++ - 主线程等待分离线程在 C++ 中完成?

string - to_string 与强制转换为字符串和运算符<<

c++:用宏定义的字符串连接常量字符串

json - Angular:HttpErrorResponse :"Http failure during parsing for..."- 从服务器成功返回的字符串

performance - 加速 MATLAB 中的随机数生成

python - groupby.shift 时的性能问题

c++ - 在另一个模块中重新定义变量

c++ - 如何将 shared_ptr 传递给生命周期较短的类?

c++ - 将模板参数安全地转换为 long

sql-server - 是否有更快的方法从另一列更新新列,但从前一行更新?