插入管柱的效率
Efficiency of insert in string
我正试图为大于long-long的非常大的整数编写这个自定义加法类。我正在研究的一种方法是将整数保持为字符串,然后将字符转换为其int组件,然后添加每个"列"。我正在考虑的另一种方法是将字符串拆分为多个字符串,每个字符串的大小相当于一个长字符串,然后使用字符串流将其转换为长字符串相加,然后重新组合。
无论如何,我遇到了这样一个事实,加法最容易反向进行,以允许数字的进位。在这种情况下,我想知道字符串的插入方法的效率。似乎因为字符串是一个字符数组,所以所有的字符都必须移到一个字符上。所以它会有所不同,但看起来效率是O(n),其中n是字符串中的字符数。
这是正确的,还是只是一种天真的解释?
编辑:我现在有了我的问题的答案,但我想知道一个相关的主题,将字符串插入流中,然后提取到int中,哪个更有效。或者做10^n*char1+10^n-1*char2…等等?
据我所知,你是对的。String的C++实现将在O(n)时间内执行插入。它将字符串视为字符数组。
对于您的数字实现,为什么不将数字存储为整数数组,并转换为仅用于输出的字符串呢?
std::string
的所有实际实现可能都是正确的。在这种情况下,您可能希望反向存储数字(尽管在其他方面可能很笨拙),或者使用类似std::deque<char>
的东西。更好的是,使用std::deque<unsigned long long>
,这将减少所涉及的操作数量。
当然,为了真正使用,您通常希望使用现有的库,而不是滚动自己的库。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 叮叮当当在修复时插入多个"覆盖"说明符
- 在 c++ 中使用带有映射的插入效率
- 速度/效率:我应该并行化这个std::map插入吗
- Unodered_map找到,然后放置或只是插入以获得最大效率
- 插入管柱的效率
- STL 映射插入效率:[] 与插入