91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中怎么初始化vector容器

發布時間:2021-07-28 17:40:56 來源:億速云 閱讀:153 作者:Leah 欄目:開發技術

C++中怎么初始化vector容器,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、STL的基本概念

STL(Standard Template Library)標準模板庫大體上分為六大組件,分別為容器,算法,迭代器,仿函數,適配器和空間配置器,其中最重要的是容器,算法和迭代器,容器和算法之間通過迭代器無縫連接。

容器:各種數據結構,比如vector,list,deque,set,map等,用來存放數據;

算法:各種常用的算法,比如sort,find,copy,for_each等;

迭代器:提供一種方法,能夠依序尋訪某個容器所含的各個元素,每個容器都有自己專屬的迭代器。迭代器的使用非常類似于指針,可以將迭代器作為指針來理解。

二、vector容器的聲明和初始化

vector<T> v; // T代表模板,可以是任意的數據類型比如int,char,string等
vector<T> Name(v.begin(), v.end()); // 將[v.begin(), v.end)之間的元素賦值創建的Name容器
vector<T> Name(n, elem); // 將Name初始化為包含10個elem值的容器
vector<T> Name(v); // 拷貝構造函數,將容器v賦值給容器Name

三、vector容器的增刪改查

/***********************增加元素****************************/
push_back(elem); // vector尾部插入元素elem
insert(const_iterator, elem); // 在迭代器指向的位置插入元素elem

/***********************刪除元素****************************/
pop_vack();   // 刪除vector最后一個元素
erase(const_iterator); // 刪除迭代器指向位置的元素
erase(const_iterator start, const_iterator_end); // 刪除迭代器start和end之間所有的元素
clear(); // 刪除vector之間的所有元素

/***********************訪問元素****************************/
for(vector<int>::iterator it=v.begin(); it!=v.end(); it++) //it是vector<int>的迭代器,可以理解為指向容器內元素的指針
for(auto it=v.begin(); it!=v.end(); it++) // 通過auto自動推理出it的類型
for(auto sub_v : v) // 增強型for循環,直接通過底層的迭代器訪問容器內元素
for(int i=0; i<v.size(); i++) // 普通for循環,i表示元素的下標,可以與數組一樣通過"v[i]"來訪問,或者"v.at(int i)"

四、vector容器的特點

vector數據結構類似于數組,但是與普通數組不同的是:vector容器可以動態擴展,但是vector并不是在原空間之后續接新的空間,而是尋找更大的內存空間然后將元數據拷貝到新的空間,之后再釋放原空間。

但是每次vector擴展空間之后都會多預留一部分空間,當新增的元素個數不超過預留的空間時,便可以直接續接在原vector后面。

vector中使用size()函數來計算容器內元素的個數,而capacity()函數則返回容器的容量。元素個數相當于vector內實際存儲的數據個數,而容器的容量則代表容器開辟的內存空間個數,因此容量>=元素個數。

下面我們來通過一段代碼來理解一下上述的內容:

vector<int>test;
int* p = nullptr;
int count=0;
for(int i=0; i<10; i++){
    test.push_back(i); // 通過push_back的方式存入數據,理論上每push_back一次,vector便復制一次
    if(p != &test[0]){ // 如果容器進行了復制,那么首地址必然會變,記錄下首地址的變化次數,便得到復制次數
        p = &test[0];
        count++;
    }
}
cout << "vector 復制的次數:" << count << endl; // 輸出復制次數
cout << "vector 的容量:" << test.capacity() << endl; // 輸出vector的容量
cout << "vector 的元素個數:" << test.size() << endl;   // 輸出vector的元素個數
/************************輸出結果***********************/
vector 復制的次數:7 // 可以看出vector只復制了7次,可以判斷每次vector在復制時預留了空間
vector 的容量:13  //  此時,vector中有13個位置,比元素個數多3個,即為預留的空間
vector 的元素個數:10 // 正兒八經的元素個數

關于C++中怎么初始化vector容器問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潜山县| 左权县| 石嘴山市| 左贡县| 绥芬河市| 兴城市| 兰坪| 仙桃市| 铁力市| 石嘴山市| 淄博市| 萨迦县| 东山县| 云南省| 滦南县| 额尔古纳市| 夏津县| 郓城县| 柘荣县| 福鼎市| 乌拉特中旗| 铜陵市| 连江县| 东丰县| 屏东县| 陇南市| 邛崃市| 光山县| 清苑县| 定州市| 麻栗坡县| 东莞市| 大同市| 三穗县| 沅江市| 廊坊市| 射洪县| 张北县| 宜城市| 黎平县| 客服|