最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++中為什么不提倡使用vector示例詳解

 更新時間:2019年08月14日 10:31:09   作者:張昭  
這篇文章主要給大家介紹了關于c++中為什么不提倡使用vector的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用c++具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

vector< bool> 并不是一個STL容器,不是一個STL容器,不是一個STL容器!

首先vector< bool> 并不是一個通常意義上的vector容器,這個源自于歷史遺留問題。
早在C++98的時候,就有vector< bool>這個類型了,但是因為當時為了考慮到節(jié)省空間的想法,所以vector< bool>里面不是一個Byte一個Byte儲存的,它是一個bit一個bit儲存的!

因為C++沒有直接去給一個bit來操作,所以用operator[]的時候,正常容器返回的應該是一個對應元素的引用,但是對于vector< bool>實際上訪問的是一個”proxy reference”而不是一個”true reference”,返回的是”std::vector< bool>:reference”類型的對象。

而一般情況情況下

vector< bool> c{ false, true, false, true, false }; 
bool b = c[0]; 
auto d = c[0]; 

對于b的初始化它其實暗含了一個隱式的類型轉換。而對于d,它的類型并不是bool,而是一個vector< bool>中的一個內部類。

而此時如果修改d的值,c中的值也會跟著修改:

d = true;
for(auto i:c)
 cout << i << " ";
cout << endl;
//上式會輸出1 1 0 1 0

而如果c被銷毀,d就會變成一個懸垂指針,再對d操作就屬于未定義行為。

而為什么說vector< bool>不是一個標準容器,就是因為它不能支持一些容器該有的基本操作,諸如取地址給指針初始化操作:

vector< bool> c{ false, true, false, true, false }; 
&tmp = c[0]; //錯誤,不能編譯,對于引用來說,因為c[0]不是一個左值 
bool *p = &c[0]; //錯誤,不能編譯,因為無法將一個臨時量地址給綁定到指針

我之前寫過一篇Blog也是講這個的:

談vector的特殊性——為什么它不是STL容器

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • C++小知識:不要節(jié)約代碼行數(shù)

    C++小知識:不要節(jié)約代碼行數(shù)

    今天小編就為大家分享一篇關于C++小知識:不要節(jié)約代碼行數(shù),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C語言sizeof和strlen區(qū)別小結

    C語言sizeof和strlen區(qū)別小結

    C語言中的sizeof和strlen是兩個常用的操作符/函數(shù),但它們的功能和用途有很大的區(qū)別,本文就詳細的來介紹一下C語言sizeof和strlen區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • C語言實現(xiàn)簡單計算器程序

    C語言實現(xiàn)簡單計算器程序

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單計算器程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C++?plog日志使用方法介紹

    C++?plog日志使用方法介紹

    最近突然心血來潮,想學一下日志方面的操作。在網上找了很多日志相關的技術,最終還是決定使用plog,小巧,快速,跨平臺
    2022-10-10
  • C++實現(xiàn)迷宮游戲

    C++實現(xiàn)迷宮游戲

    這篇文章主要為大家詳細介紹了C++實現(xiàn)迷宮游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Qt5 串口類QSerialPort的實現(xiàn)

    Qt5 串口類QSerialPort的實現(xiàn)

    在Qt5以上提供了QtSerialPort模塊,方便編程人員快速的開發(fā)應用串口的應用程序。本文主要介紹了Qt5 串口類QSerialPort的實現(xiàn),,感興趣的可以了解一下
    2022-05-05
  • visual studio code 配置C++開發(fā)環(huán)境的教程詳解 (windows 開發(fā)環(huán)境)

    visual studio code 配置C++開發(fā)環(huán)境的教程詳解 (windows 開發(fā)環(huán)境)

    這篇文章主要介紹了 windows 開發(fā)環(huán)境下visual studio code 配置C++開發(fā)環(huán)境的圖文教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • C++讀寫配置項的基本操作

    C++讀寫配置項的基本操作

    這篇文章主要介紹了C++讀寫配置項的基本操作,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2021-01-01
  • C語言選擇、循環(huán)、函數(shù)、數(shù)組與操作符

    C語言選擇、循環(huán)、函數(shù)、數(shù)組與操作符

    這篇文章主要介紹了C語言選擇、循環(huán)、函數(shù)、數(shù)組與操作符,文章基于C語言展開對主題的詳細介紹,下文內容需要的小伙伴可以參考一下
    2022-04-04
  • C語言編寫獲取Linux本地目錄及本機信息的小程序實例

    C語言編寫獲取Linux本地目錄及本機信息的小程序實例

    這篇文章主要介紹了C語言編寫獲取Linux本地目錄及本機信息的小程序實例,小程序能夠根據(jù)參數(shù)輸出目錄的結構以及獲取主機用戶的信息,需要的朋友可以參考下
    2016-04-04

最新評論

石城县| 图木舒克市| 林口县| 阿巴嘎旗| 黄平县| 迁安市| 易门县| 德化县| 行唐县| 都昌县| 吴桥县| 兰州市| 唐河县| 台北市| 临邑县| 山阴县| 屯留县| 滕州市| 尼玛县| 高阳县| 鄄城县| 沙湾县| 舞钢市| 沧源| 石台县| 万州区| 昭觉县| 达日县| 临朐县| 桦川县| 永靖县| 全椒县| 佳木斯市| 石景山区| 行唐县| 高安市| 抚顺县| 长葛市| 辽宁省| 湟源县| 乌兰浩特市|