日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

转:STL:string 大小(Size)和容量(Capacity)

發(fā)布時(shí)間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:STL:string 大小(Size)和容量(Capacity) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

strings存在三種“大小”:

1、size()和length()

 返回string中現(xiàn)在的字符個(gè)數(shù)。上述兩個(gè)函數(shù)等效。

成員函數(shù)empty()用來(lái)檢驗(yàn)字符數(shù)是否為0,亦即字符串是否為空。你應(yīng)該優(yōu)先使用該函數(shù),因?yàn)樗萳ength()或size()來(lái)得快。

也就是說(shuō),使用if(s.empty()?==?true)而不使用if(s.size()?==?0)(筆者注)

2、max_size()

  此函數(shù)返回一個(gè)string最多能夠包含的字符數(shù)。一個(gè)string通常包含一塊單獨(dú)內(nèi)存區(qū)塊內(nèi)的所有字符,所以可能跟PC機(jī)器本省的限制有關(guān)系。返回值一般而言是索引型別的最大值減1。之所以“減1”有兩個(gè)原因:(a)最大值本身是npos;(b)在具體實(shí)現(xiàn)中,可因此輕易在內(nèi)部緩沖區(qū)之后添加一個(gè)'\0',以便將這個(gè)string當(dāng)做C-string使用(例如透過(guò)c_str())。一旦某個(gè)操作函數(shù)使用一個(gè)長(zhǎng)度大于max_size()的string,length_error異常就會(huì)被拋出來(lái)。

3、capacity()

重新分配內(nèi)存之前,string所能包含的最大字符數(shù)。

讓string擁有足夠的容量是很重要的,原因有二:

1、重新分配會(huì)造成所有指向string的references,pointer和iterators失效。

2、重新分配(reallocation)很耗時(shí)間。

  因此,如果程序要用到指向string(或其內(nèi)部字符)的references,pointers和iterators。抑或需要很快的執(zhí)行速度,就必須考慮容量(capacity)問(wèn)題。成員函數(shù)reserve()就是用來(lái)避免重分配行為。reserve()使你得以預(yù)留一定容量,并確保該容量尚有余裕之時(shí),reference能夠一直保持有效:

std::string?s;?//?create?empty?string

s.reserve(80);?//?reserve?memory?for?80?characters

  容量概念應(yīng)用于string和應(yīng)用于vector是相同的,但有一個(gè)顯著差異:面對(duì)string你可以調(diào)用reserve()來(lái)縮減實(shí)際容量,而vector的reserve()卻沒(méi)有這項(xiàng)功能。拿一個(gè)“小于現(xiàn)有容量”的參數(shù)來(lái)調(diào)用reserve(),實(shí)際上就是一種非強(qiáng)制性請(qǐng)求(nonbinding?shrink?request)——如果參數(shù)小于現(xiàn)有字符數(shù),則這項(xiàng)請(qǐng)求被視為非強(qiáng)制性適度縮減請(qǐng)求(nonbinding?shrink-to-fit-requset)。也就是說(shuō)你可能想要縮減容量至某個(gè)目標(biāo),但不保證你一定可以如愿。String的reserve()參數(shù)做默認(rèn)值為0,所以調(diào)用reserve()并且不給參數(shù),就是一種“非強(qiáng)制性適度縮減請(qǐng)求”:

s.reserve();?//?"would?like?to?shrink?capacity?to?fit?the?current?size"

  為什縮減動(dòng)作是非強(qiáng)制性的呢?因?yàn)?#34;如何獲取最佳性能"系由實(shí)現(xiàn)者定義。具體實(shí)作string時(shí),如何處理速度和內(nèi)存耗用量之間關(guān)系可能有不同的設(shè)計(jì)思路。因此任何實(shí)作作品都可以以較大的魄力增加容量,并且永不縮減。

  C++Standard規(guī)定,唯有在相應(yīng)reserve()調(diào)用時(shí),容量才可能縮減。因此即使發(fā)生?"字符被刪除或被改變"的事情,任何其他字符只要位于“被操作字符”之前,指向他們身上的那些references、pointer和iterator就仍然保持有效。

備注:本文內(nèi)容摘自《C++標(biāo)準(zhǔn)程序庫(kù)》(侯捷?孟巖譯)

轉(zhuǎn)載于:https://www.cnblogs.com/cchun/archive/2012/06/27/2564573.html

總結(jié)

以上是生活随笔為你收集整理的转:STL:string 大小(Size)和容量(Capacity)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91精品国产综合久久国产大片 | 黄色欧美在线 | 少妇饥渴难耐 | 最新欧美大片 | 久热国产在线 | 久久精品国产免费看久久精品 | 天天干天天日 | 在线免费黄网 | 亚洲成人一级片 | 美国成人av | 日韩欧美一区二区三区视频 | 美女视频黄免费 | 日韩成人综合网 | 色噜噜一区二区三区 | 午夜在线成人 | 国产乱码久久久久久 | 色噜噜影院 | 国产成人亚洲精品自产在线 | 国产精品va | 三上悠亚一区二区在线观看 | 亚洲3p| 男人天堂网在线视频 | 欧美日韩综合一区二区 | 我和单位漂亮少妇激情 | 欧美成人综合视频 | 在线免费观看高清视频 | 毛片手机在线 | 亚洲免费小视频 | av官网在线观看 | 国产精品久久久久久久久免费桃花 | 台湾av在线播放 | 成人在线免费视频观看 | 亚洲免费视 | 欧美亚洲一区二区在线观看 | 妖精视频在线观看免费 | 3d欧美精品动漫xxxx无尽 | 日本色妞 | 天天射av | 大乳村妇的性需求 | 琪琪免费视频 | 亚洲一二三四 | 哺乳援交吃奶在线播放 | 久草视频在线观 | 不卡视频在线播放 | 国产成人亚洲精品自产在线 | 男女黄床上色视频免费的软件 | 丰满岳乱妇一区二区三区 | 亚洲v欧美v另类v综合v日韩v | av第一福利 | 精品无码国产一区二区三区av | 黄色综合网站 | 美女脱了裤子让男人桶 | 亚洲图片欧美 | 一级网站在线观看 | 欧美视频久久 | 男女啊啊啊 | 91中文字幕在线 | 91在线播 | 亚洲免费高清 | 嫩草综合 | 爆乳熟妇一区二区三区霸乳 | 欧美午夜激情影院 | 韩日视频 | 超碰超碰超碰超碰 | 亚洲永久精品国产 | 日本精品一区二区 | 偷偷操不一样的99 | 亚洲精品一区二三区 | 久草视 | 欧美美女在线观看 | 久精品国产 | 欧美一级片免费观看 | 蜜桃免费在线视频 | 日本久久不卡 | 欧美精品偷拍 | 樱花草涩涩www在线播放 | 亚洲人成在线观看 | 久久久精品| 啄木乌欧美一区二区三区 | 免费在线国产 | 99国产精品久久久久久久久久久 | 久久久久久国产精品日本 | 爽爽影院免费观看 | 中文字幕观看 | 饥渴少妇勾引水电工av | 亚洲色图国产 | 黄色一二三区 | 日韩精品――中文字幕 | 男女h网站| 无码人妻精品一区二区三区温州 | 午夜久久久久久久久久 | 国产欧美日韩综合精品一区 | 欧美激情精品久久久久久蜜臀 | 亚洲国产婷婷香蕉久久久久久99 | 欧美另类极品videosbest最新版本 | 人与动物av | 不卡视频在线 | 成人污在线 | 久久99伊人 |