pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

C++ 中的高效字符串連接

Efficient string concatenation in C++(C++ 中的高效字符串連接)
本文介紹了C++ 中的高效字符串連接的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我聽到一些人對 std::string 中的+"運算符和各種加速連接的解決方法表示擔憂.這些真的有必要嗎?如果是這樣,在 C++ 中連接字符串的最佳方法是什么?

I heard a few people expressing worries about "+" operator in std::string and various workarounds to speed up concatenation. Are any of these really necessary? If so, what is the best way to concatenate strings in C++?

推薦答案

額外的工作可能不值得,除非你真的很需要效率.你可能會因為使用運算符 += 代替.

The extra work is probably not worth it, unless you really really need efficiency. You probably will have much better efficiency simply by using operator += instead.

現在在免責聲明之后,我將回答您的實際問題......

Now after that disclaimer, I will answer your actual question...

STL 字符串類的效率取決于您使用的 STL 實現.

The efficiency of the STL string class depends on the implementation of STL you are using.

您可以保證效率更好地控制自己通過c內置函數手動進行連接.

You could guarantee efficiency and have greater control yourself by doing concatenation manually via c built-in functions.

為什么 operator+ 效率不高:

看看這個界面:

template <class charT, class traits, class Alloc>
basic_string<charT, traits, Alloc>
operator+(const basic_string<charT, traits, Alloc>& s1,
          const basic_string<charT, traits, Alloc>& s2)

可以看到在每個+之后返回了一個新對象.這意味著每次都使用一個新的緩沖區.如果您正在執行大量額外的 + 操作,則效率不高.

You can see that a new object is returned after each +. That means that a new buffer is used each time. If you are doing a ton of extra + operations it is not efficient.

為什么可以提高效率:

  • 您是在保證效率,而不是相信代理人會為您高效地完成工作
  • std::string 類對字符串的最大大小一無所知,也不知道連接它的頻率.您可能擁有這些知識,并且可以根據這些信息做事.這將導致更少的重新分配.
  • 您將手動控制緩沖區,以便確保在您不希望發生這種情況時不會將整個字符串復制到新緩沖區中.
  • 您可以將堆棧用于緩沖??區而不是堆,這樣效率更高.
  • string + 運算符將創建一個新的字符串對象并使用新的緩沖區返回它.

實施注意事項:

  • 跟蹤字符串長度.
  • 保留一個指向字符串結尾和開頭的指針,或者只是開頭并使用開頭 + 長度作為偏移量來查找字符串的結尾.
  • 確保您存儲字符串的緩沖區足夠大,這樣您就不需要重新分配數據
  • 使用 strcpy 而不是 strcat,因此您無需遍歷字符串的長度即可找到字符串的結尾.

繩索數據結構:

如果您需要非常快速的連接,請考慮使用 繩索數據結構.

If you need really fast concatenations consider using a rope data structure.

這篇關于C++ 中的高效字符串連接的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How can I read and manipulate CSV file data in C++?(如何在 C++ 中讀取和操作 CSV 文件數據?)
In C++ why can#39;t I write a for() loop like this: for( int i = 1, double i2 = 0; (在 C++ 中,為什么我不能像這樣編寫 for() 循環: for( int i = 1, double i2 = 0;)
How does OpenMP handle nested loops?(OpenMP 如何處理嵌套循環?)
Reusing thread in loop c++(在循環 C++ 中重用線程)
Precise thread sleep needed. Max 1ms error(需要精確的線程睡眠.最大 1ms 誤差)
Is there ever a need for a quot;do {...} while ( )quot; loop?(是否需要“do {...} while ()?環形?)
主站蜘蛛池模板: 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 锂电池生产厂家-电动自行车航模无人机锂电池定制-世豹新能源 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 华中线缆有限公司-电缆厂|电缆厂家|电线电缆厂家 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 微动开关厂家-东莞市德沃电子科技有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 精密模具-双色注塑模具加工-深圳铭洋宇通| 水轮机密封网 | 水轮机密封产品研发生产厂家 | 不锈钢水箱生产厂家_消防水箱生产厂家-河南联固供水设备有限公司 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 单机除尘器 骨架-脉冲除尘器设备生产厂家-润天环保设备 | 壹车网 | 第一时间提供新车_资讯_报价_图片_排行! | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 铆钉机|旋铆机|东莞旋铆机厂家|鸿佰专业生产气压/油压/自动铆钉机 | 深圳办公室装修-写字楼装修设计-深圳标榜装饰公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 低合金板|安阳低合金板|河南低合金板|高强度板|桥梁板_安阳润兴 北京租车牌|京牌指标租赁|小客车指标出租 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 【德信自动化】点胶机_全自动点胶机_自动点胶机厂家_塑料热压机_自动螺丝机-深圳市德信自动化设备有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | 江苏大隆凯科技有限公司| 北京发电车出租-发电机租赁公司-柴油发电机厂家 - 北京明旺盛安机电设备有限公司 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 烟台金蝶财务软件,烟台网站建设,烟台网络推广 |