精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我們不需要字符串類型

開發 前端
字符串是應該作為內置類型還是僅僅作為字符數組的一個別名呢?考慮到實現細節的可選性,我并不認為需要對字符串進行類型特化。在C++看來,字符串 和“vector”容器基本上是一樣的,除了某些特殊操作,例如:大小寫轉換,需要依賴容器元素“char”類型(而不是作用于容器本身)。

字符串是應該作為內置類型還是僅僅作為字符數組的一個別名呢?考慮到實現細節的可選性,我并不認為需要對字符串進行類型特化。在C++看來,字符串 和“vector”容器基本上是一樣的,除了某些特殊操作,例如:大小寫轉換,需要依賴容器元素“char”類型(而不是作用于容器本身)。

什么是字符串?

字符串除了是一系列的字符組成,沒有什么特別的。更確切地說,程序中的字符串是特定字符集的字符集合。這里的字符并不總是圖象字符,它可以包含可打印字符,連接字符,或者控制字符,那么這又有什么不同嗎?

考慮計算字符串的長度,它應該返回的是字符串中字形字符、連接符號的總數還是應該返回字符串中字符占用空間的長度?兩個字面等價但是內部存儲不同的 的字符串應該返回相同的長度嗎?考慮字符串規范化的復雜程度和應用相同規則來計算‘length’長度聽起來很荒唐可笑。不同場景下字符串的長度很難統一 計算,而且這還依賴于字符渲染引擎。唯一有意義的是返回字符串存儲空間大小——而這和計算字符數組的長度是一致的。

我們可以通過對字符串進行索引和取下標操作。那么我們應該使用字符字面索引還是字符存儲索引?另外,考慮到組合Unicode字符串,沒有統一的標 準來衡量哪些字符是字面顯示字符,哪些是控制字符。字符的組合種類很多(不受限制),因此沒有固定的字符類型來定義一個“邏輯”字符。因此字符串的操作應 該針對存儲字符地址——這又和字符數組沒有區別了。

C++中的不同

C++中的string和vector只有一個明顯的區別是:string是以null結尾的。并且string提供c_str方法返回內部字符串存儲指針。(C++11定義了string來表明這是存儲字符串的有效方式)。

對C++來說,如果string不提供c_str方法,那么string類就基本沒有存在的必要(相對于vector)。然而,這是也不是一個必須 的特性,提供出來只是為了方便將string進行轉換,從而方便調用早期C風格的字符串指針API。怪異的是,C++標準庫也使用了類似的接 口,ofstream的構造函數需要傳遞的是一個‘const char*’指針而不是string類型。(在C++11中修復了該問題)

使用null作為字符串結束符也是一個糟糕的選擇,導致在C函數庫中,一些函數如:strcat, strcpy并不安全。使用C風格的字符串是一件令人生畏且容易出錯的差事。現代風格的API接口已經很少依賴使用null作為字符串結束,這些函數通常 都要求提供字符串的長度作為一個參數。

導致C++中的string和vector有所不同,這是因為歷史包袱,而大多數程序員都不需要關心它的存在。

字符代理和變長字符編碼

前述的討論基于這樣一個假設:字符串存儲中一個存儲元素編碼一個字符。而通常采用這種編碼方式是效率低下的,使用變長字符編碼可以解決這個問題:使 用不同數量的字節來表示一個字符。例如:在UTF-16中,一個字符可以由2個字節或者4個字節進行存儲。而不存儲字符的單元作為存儲序列的一部分,被叫 做字符代理。

字符代理和連接字符不同。字符代理在字符集中沒有意義:它只是用來填充編碼占位。對字符的到操作依賴以實際存儲元素位置。將編碼字符串當作一系列的 字符來操作,通常很麻煩而且容易導致未知語義。編碼字符串的length應該返回什么值呢?是編碼字符的個數還是存儲元素的個數?

目前的方法是,將編碼字符串作為一種特殊字符類型,并提供一定程度的抽象,你可要存儲各種類型的字符,也可以將其作為一個字符序列操作。length返回字符的個數,而與底層編碼方式無關(或者通過其他方法返回)。

設計這個類的挑戰在于效率。基本操作如索引字符變成了一個線性復雜度操作。需要先對字符串進行解碼,從開始掃描,重新組織字符代理,并計算真實的字 符個數。即便是簡單的前向掃描也依賴以循環和下一個字符狀態的解析。而這種操作負載在所有的基本操作都會被累積,比如拆分,翻譯和正則表達式匹配。

目前(內置字符串類型)的語言并沒有按這種方式操作字符串,考慮效率問題,這使得采用這種方式變得沒有吸引力。而在字符域,加載字符,解碼字符和對 字符串進行處理則簡單得多。這種方式會消耗更多內存,但是我認為這對于世界上現有的字符集來說并不是一個主要問題——盡管存在大量的字符集,但是相較其他 集合則小得多。

函數庫的支持

字符串有許多相對于簡單數組的特殊操作:規范化、字符轉換、正則表達式運算、字符解析、格式化、裁剪、編碼等等。相對地,任何類型的“vector”都有一些特殊操作:數字可以累加,求平均,計算中位數。向量可以做變換,簡化和柵格化。

值得探討的是,一些集合運算是應該作為一個成員函數還是獨立函數。如果上述操作作為一個成員函數,那么需要特地提供一個”string”類型。而上 述操作提供為獨立函數的話,使用原始”array”數組類型就可以工作了。顯然,上述操作都可以寫成獨立函數,沒有那個函數需要特別的處理,只需要提供 array接口就可以了。

不過有一個語法上的特例,如果我把”str.toUpperCase()”提取為獨立函數顯得有點怪異。D語言則完全統一了函數調用語法。我預計C++也會跟隨這一趨勢,許多操作函數已經被當作獨立函數提供而不是采用成員函數。似乎發展也傾向于獨立函數。

如果獨立函數可行,那么就沒有必要提取一個string類。字符串操作可以寫成作用于字符數組的獨立函數。

字符串代表什么?

如果你的字符串不僅僅使用ASCI字符,通常可以考慮使用Unicode字符集,但是,也有可能在你的代碼中,只使用了ascii碼或者是 latin-1編碼。不過大多數字符串都不會僅限于此。有些語言,比如PHP,允許你在全局范圍設定編碼方式。使用string做標記,通常都不會做太多 變化(譯:我猜測作者的意思應該是大多數語言已經內置了string的編碼方式,而且不允許調整)。

我們假定字符集使用ascii編碼,以ascii編碼的字符串使用一個模版類string。為了標識不同于其他字符集,我們把這個字符串類型標識為 “char ascii”。一旦我們做了這樣的設定,我們就不希望再感受到string的類型了,它工作起來就和數組很相似了。

回到剛才談到的變長編碼:如果你使用UTF-16編碼字符,并且需要使用字符代理。現在string變得含義模糊了,string應該被當做 unicode字符組合還是真實的utf16編碼值?(沿用剛才的實現)使用一個類型別名標識比較合適,我們假定為“type utf16:binary 16bit”,并作為一個數組。現在歧義消除了,字符串是編碼值的集合,而不是字符。

僅僅是一個typedef?

現在我覺得不需要定義一個特殊的string類型,如果需要string類型,可以僅僅使用一個數組的別名。但是string作為基礎類型被大量使 用,這也導致了許多問題。一些情況下需要著重考慮字符編碼,使用特定類型的數組就會比較安全。同時也需要一個富字符串處理函數庫,但是不應該作為一個字符 串類型(string)提供。

你能舉例有什么情況下需要專門的string類型,或者這樣做會更有效嗎?

原文鏈接:http://mortoray.com/2013/08/13/we-dont-need-a-string-type/

譯文鏈接:http://blog.jobbole.com/52338/

責任編輯:陳四芳 來源: 伯樂在線
相關推薦

2013-07-18 09:21:32

代碼文檔

2020-02-18 10:00:15

數據庫工具技術

2010-05-11 08:49:35

2017-03-13 13:54:40

戴爾

2009-11-05 11:13:25

李嚴冰VMware

2012-08-23 09:50:07

測試測試人員軟件測試

2009-11-23 12:45:22

2015-09-30 09:57:53

天分熱情工程師

2024-02-22 09:00:00

LogitMat數據集算法

2015-08-20 10:56:19

算法界面開發

2021-12-12 22:20:47

Docker開發容器

2014-01-17 13:09:48

Linux碎片整理

2022-02-15 07:26:34

web前端算法題

2022-09-14 15:10:40

前端架構

2010-11-23 10:55:47

跳槽

2018-01-29 13:18:42

前端JavaScript

2023-11-07 07:41:27

淘寶京東確認收貨

2020-12-20 18:08:31

業務層服務化微服務

2016-10-26 20:21:34

自動縮放可擴展性

2016-10-26 13:35:43

云自動資源負載
點贊
收藏

51CTO技術棧公眾號

亚洲精品日产aⅴ| 日韩国产欧美区| 中国一级大黄大黄大色毛片| 国产福利第一视频| 亚洲综合另类| 久久精品视频99| 国产一级二级视频| 国产精品亚洲d| 丰满岳乱妇一区二区三区| 97在线视频一区| 欧美双性人妖o0| 成人做爰免费视频免费看| 亚洲精品老司机| 亚洲一区中文字幕在线观看| 亚洲另类在线观看| 中文字幕日韩一区二区不卡| 日韩欧美国产高清| 亚洲欧美另类动漫| 91最新在线| av一区二区三区黑人| 国产日韩精品在线播放| 综合激情网五月| 欧美精品入口| 少妇激情综合网| 国产一二三四五区| 久久中文字幕导航| 日韩欧美一二三四区| 我要看一级黄色大片| 在线视频超级| 国产精品视频观看| 美女精品国产| 黄色一级a毛片| 国产在线播放一区三区四| 国产va免费精品高清在线| 国产精品.www| 欧美日本二区| 超薄丝袜一区二区| 久久免费手机视频| 黑人操亚洲人| 一区二区三区高清国产| 亚洲精品在线网址| 久久天天久久| 欧美日韩精品一区二区三区蜜桃 | 欧美污视频网站| heyzo在线| 亚洲福利一区二区| 国产91视频一区| av大全在线| 亚洲嫩草精品久久| 异国色恋浪漫潭| 麻豆影院在线| 亚洲三级电影网站| 日本老太婆做爰视频| a天堂中文在线官网在线| 亚洲欧洲99久久| 久久久久久九九九九| 中文字幕无线码一区| 日本不卡免费在线视频| 国产精品久久久久久久久久| 真实的国产乱xxxx在线91| 青青草成人在线观看| 97色在线视频| 免费黄色网址在线| 久久久久久黄| 久久久久久久激情视频| 日本三级片在线观看| 亚洲综合不卡| 欧美激情一区二区三区高清视频 | 午夜大片在线观看| 中文字幕色婷婷在线视频| 岛国av一区二区| www.国产区| 欧美日韩va| 欧美一区二视频| 91极品视频在线观看| 日日夜夜精品| 亚洲第一天堂无码专区| 人妻大战黑人白浆狂泄| 日本久久综合| 欧美精品一二区| 亚洲欧美精品一区二区三区| 免费在线观看视频一区| 亚洲综合小说区| 神马亚洲视频| 国产精品久久久久久久蜜臀| 国产精品无码免费专区午夜| 中文字幕在线观看播放| 精品欧美国产一区二区三区| 欧美第一页浮力影院| swag国产精品一区二区| 日韩视频在线永久播放| 亚洲av网址在线| 久久国产小视频| 国内精久久久久久久久久人| 成人免费一级片| 国产成人在线电影| 99re资源| 成年人视频在线看| 久久久久国产精品麻豆| a级网站在线观看| 亚洲色图官网| 欧美一级爆毛片| www.av欧美| 在线观看视频免费一区二区三区| 欧美国产日韩二区| 日本一区二区不卡在线| 在线观看一区视频| 国产日韩欧美在线观看| 午夜小视频免费| 26uuu久久天堂性欧美| 强伦女教师2:伦理在线观看| 超碰porn在线| 在线中文字幕一区| 亚洲婷婷在线观看| 91亚洲一区| 美日韩丰满少妇在线观看| 成人免费毛片男人用品| 成人少妇影院yyyy| 在线观看三级网站| 中文另类视频| 亚洲欧美日韩成人| 日本一级淫片免费放| 三级在线观看一区二区| 国产精品日韩一区二区三区| 麻豆网站在线看| 欧洲人成人精品| 亚洲第一页av| 99视频精品| 国产伦理一区二区三区| 裸体xxxx视频在线| 精品久久香蕉国产线看观看gif| 国产免费人做人爱午夜视频| 视频91a欧美| 国产一区二区三区在线观看网站| 亚洲二区在线播放| 美女免费视频一区二区| 日韩欧美在线电影| 四虎影视成人| 日韩小视频在线观看专区| 亚洲日本精品视频| 久久中文在线| 99在线视频首页| 97caopor国产在线视频| 欧美精品18+| 亚洲色偷偷综合亚洲av伊人| 久久精品国产999大香线蕉| 亚洲成人第一| 24小时成人在线视频| 亚洲精品久久久久久久久久久久久 | 欧美日韩成人影院| 国产亚洲精品久久久久动| 欧美成人一二三区| 国产成人av一区二区三区在线| 日韩中文字幕av在线| 国产精品扒开腿做爽爽爽视频软件| 日韩一区二区影院| 天天躁日日躁aaaxxⅹ| 久久精品官网| 国产伦精品一区二区三区| 国内在线视频| 亚洲激情视频在线观看| 中文字幕一区在线播放| 国产日韩精品一区| 伊人网在线综合| 一本精品一区二区三区| 国产成人av一区二区三区| 三级外国片在线观看视频| 欧美二区在线观看| 日韩女优一区二区| www.亚洲人| 日本999视频| 日本成人a网站| 国产成人涩涩涩视频在线观看| 色婷婷av一区二区三区之红樱桃| 中文字幕中文字幕一区二区| 在线视频观看一区二区| 亚洲特级毛片| 色综合久久久久久久久五月| 四虎地址8848精品| 久久久久久久久爱| 国产精品无码2021在线观看| 91麻豆精品国产综合久久久久久| 1024手机在线观看你懂的| 一区二区三区精品视频在线观看| 国产精品青青草| 91精品久久久久久粉嫩| 亚洲精品国产成人| 亚洲天堂狠狠干| 亚洲成人激情av| 国产精品无码无卡无需播放器| 天堂蜜桃一区二区三区| 中文字幕中文字幕在线中一区高清 | 色免费在线视频| 在线看片欧美| 亚洲一区二区免费视频软件合集| 91p九色成人| 欧美精品电影免费在线观看| 欧美 日韩 人妻 高清 中文| 欧美在线视频日韩| 国语对白一区二区| 国产精品萝li| aaaaaav| 日韩综合在线视频| 久久久久久久久久久综合| 欧美精品色图| 精品无码久久久久国产| 自由日本语热亚洲人| 久久人体大胆视频| 久久av少妇| 欧美成人艳星乳罩| 亚洲天堂视频在线| 黑人巨大精品欧美一区免费视频 | 日韩欧美中文在线观看| 国产精品黄视频| 亚洲性受xxx喷奶水| 欧美激情视频在线观看| 天堂在线视频免费观看| 91精品国产综合久久婷婷香蕉| 久草视频免费在线播放| 国产精品无人区| 天天操夜夜操很很操| 青青草国产成人av片免费| 丝袜老师办公室里做好紧好爽 | 成人在线不卡| 欧美中文在线观看| 菠萝蜜视频在线观看www入口| 国产午夜精品久久久| 成人毛片在线精品国产| 777久久久精品| 在线观看免费黄色小视频| 色哟哟一区二区在线观看| 国产乡下妇女做爰视频| 一区二区三区中文在线观看| 97人妻精品一区二区三区免| 奇米777欧美一区二区| 国产亚洲欧美在线视频| 夜夜嗨一区二区三区| 黄色一级片在线看| av一区二区高清| 欧美一区亚洲二区| 国产成人精品三级高清久久91| 91传媒在线免费观看| 国产日韩一区二区三免费高清| 2020国产精品视频| 天堂资源在线| 热久久免费国产视频| 国产精品av一区二区三区| 浅井舞香一区二区| 日本国产欧美| 国产人妖伪娘一区91| 色999久久久精品人人澡69 | 成人午夜亚洲| 成人福利在线观看| 最新日韩精品| 国产精品成熟老女人| 成人精品国产亚洲| 成人国产精品色哟哟| 日韩精品免费视频一区二区三区| 国产精品电影观看| 欧美成人毛片| 92国产精品视频| 操欧美女人视频| 91精品中文在线| 在线播放一区二区精品视频| 国产色婷婷国产综合在线理论片a| 性xxxxfreexxxxx欧美丶| 欧美中文在线视频| 电影亚洲一区| 亚洲一区二区三区视频播放| 成人爽a毛片| 亚洲综合精品一区二区| 美女一区二区在线观看| y111111国产精品久久婷婷| 国产伦精品一区二区三区在线播放| 91久久精品国产91性色| 香蕉大人久久国产成人av| 精品国产一区二区三区四区vr| 99精品中文字幕在线不卡| 免费av在线一区二区| 久久亚洲精品中文字幕蜜潮电影| 热舞福利精品大尺度视频| 欧美wwwww| 亚洲综合av一区| 国产综合精品| 中文字幕第21页| 粉嫩aⅴ一区二区三区四区| 久久精品视频在线观看免费| www.亚洲免费av| 日本人亚洲人jjzzjjz| 一二三四社区欧美黄| 伊人中文字幕在线观看| 日韩一级免费观看| 免费观看污网站| 国产亚洲欧美一级| 久久精品一区二区三| 色8久久人人97超碰香蕉987| 精品国产一级片| 亚洲欧美日韩中文在线| 影音先锋中文在线视频| 国产精品爱久久久久久久| 国产精品网址| 黄色a级在线观看| 视频一区中文字幕国产| 野战少妇38p| 国产精品国产三级国产三级人妇| 亚洲欧美另类日本| 黑人巨大精品欧美一区二区一视频 | 日韩片欧美片| 夫妻免费无码v看片| 国产精品一二三区在线| 波多野结衣三级视频| 国产目拍亚洲精品99久久精品| 大胸美女被爆操| 天天操天天干天天综合网| 国产绿帽一区二区三区| 一本色道久久88亚洲综合88| 免费观看在线黄色网| 欧美在线一级va免费观看| 粉嫩精品导航导航| 超碰在线免费观看97| 青青草一区二区三区| 国产高清自拍视频| 亚洲影院理伦片| 国产日韩欧美一区二区东京热| 精品伦理精品一区| 国产一区久久精品| 国产精品扒开腿爽爽爽视频| 亚洲香蕉视频| 免费观看美女裸体网站| 成人性生交大片免费看中文网站| 精品人妻一区二区三区日产乱码卜| 国产欧美一区二区三区在线老狼| 蜜桃视频最新网址| 色8久久精品久久久久久蜜| 亚洲欧美日韩精品永久在线| 中文字幕精品一区久久久久| 在线天堂中文资源最新版| 精品亚洲欧美日韩| 久久国产电影| 两根大肉大捧一进一出好爽视频| 毛片av一区二区三区| 国产精品情侣呻吟对白视频| 欧美日韩一区国产| av资源在线观看免费高清| 国产精品青草久久久久福利99| 99久久香蕉| 一本色道久久综合亚洲二区三区| 99在线精品视频在线观看| 2一3sex性hd| 欧美日韩美女在线| 可以免费看污视频的网站在线| 另类少妇人与禽zozz0性伦| 国产人与zoxxxx另类91| 国产高清不卡无码视频| 成人免费视频一区| 日日骚av一区二区| 精品国产免费人成电影在线观看四季| 国产福利在线观看| 国产欧美日韩精品专区| 999国产精品永久免费视频app| 黑森林福利视频导航| 国产三区在线成人av| 奇米影视第四色777| 国产视频一区在线| 成人性生交大片免费看网站| 国内外成人免费视频| 天堂久久久久va久久久久| sm捆绑调教视频| 精品国一区二区三区| 在线免费av资源| 亚洲日本精品一区| 国产精品性做久久久久久| 国产性生活网站| 日韩一区国产二区欧美三区| 好看的中文字幕在线播放| 欧美日韩喷水| 极品少妇xxxx偷拍精品少妇| 久久精品一级片| 亚洲天堂成人在线| 香蕉成人av| 特级黄色录像片| 91首页免费视频| 亚洲一级在线播放| 色综久久综合桃花网| 88久久精品| 男人天堂av片| 成人免费视频caoporn| 日本免费精品视频| 久久夜精品香蕉| 亚洲福利天堂| 91在线第一页| 在线视频综合导航| 国产免费永久在线观看| 日韩美女激情视频| 亚洲精品一二三区区别| 亚洲色图14p| 欧美一区二区精品在线| 伊人影院在线视频| 区一区二区三区中文字幕 | 免费欧美一级视频|