vector向量容器

一、vector向量容器

簡介:
Vector向量容器可以簡單的理解為一個數組,它的下標也是從0開始的,使用時可以不用確定大小,但是它可以對于元素的插入和刪除,可以進行動態調整所占用的內存空間,它里面有很多系統已經定義好了的函數方法,可以直接調用進行插入元素與在尾部擴張元素…

函數方法總結:

1,尾部元素擴張 push_back()
2,返回首元素位置的迭代器 begin();
3,返回最后一個元素的下一元素位置的迭代器 end();
4,元素的插入 insert();
5,元素的刪除
?刪除vector中迭代器所指的一個元素或一段區間中的所有元素 erase();
?一次性刪除vector中的所有元素 clear();
6,反向排列reverse
7,sort()對向量元素排序
8,反向排序(使用時需要在頭文件進行聲明#include < algorithm >) reverse();
9,對向量元素進行排序(默認為升序排列)(使用時需要在頭文件進行聲明#include < algorithm >) sort();
10,向量大小size();
11,判斷向量是否為空empty();

Vector向量容器的用法:

①使用Vector向量容器,需要在頭文件聲明 #include< vector >
②創建vector對象的三種形式
ⅰ vector< int >v; //存儲整形的容器v
ⅱ vector< double >v(10); //存儲10個double類型的向量容器,這里的每一個元素都為0
ⅲ vector< double >v(10,12.02); //存儲10個double類型的向量容器, 每個值都為12.02
③使用迭代器進行遍歷
vector::iterator it; //定義迭代器變量it
for(it=v.begin();it!=v.end();it++) //從首元素到最后一個元素的下一個元素位置結束
{
cout << *it << endl;//將這10個double類型的元素輸出出來
}

1,for循環遍歷訪問vector元素
#include <iostream>
#include<vector>
using namespace std;	//因為C++STL泛型都是定義在std命名空間中,所以,必須在頭文件聲明的最后一句加上這一行int main()
{vector<double> v (10,14.12);//定義一個存儲10個double類型元素的向量容器,其中的每一個元素都為14.12v[5]=10.14;	//對v[5]進行重新賦值v[9]=78.10;	//對v[9]進行重新賦值for(int i=0;i<10;i++){cout << v[i] << endl;//將這10個double類型的元素輸出出來}return 0;
}
2,用迭代器訪問vector元素
#include <iostream>
#include<vector>
using namespace std;int main()
{vector<double> v (10,14.12);//定義一個存儲10個double類型元素的向量容器,其中的每一個元素都為14.12v[5]=10.14;	//對v[5]進行重新賦值v[9]=78.10;//對v[9]進行重新賦值vector<double>::iterator it;    //定義迭代器變量itfor(it=v.begin();it!=v.end();it++)  //從首元素到最后一個元素的下一個元素位置結束{cout << *it << endl;//將這10個double類型的元素輸出出來}return 0;
}//這里我有個疑問,最后輸出的v[9],是78.1,而不是78.10。我也不知道為啥~~~
3,一些函數方法的使用
#include <iostream>
#include<vector>
using namespace std;int main()
{vector<double> v (10,14.12);//定義一個存儲10個double類型元素的向量容器,其中的每一個元素都為14.12v[5]=10.14;	//對v[5]進行重新賦值v[9]=78.10;//對v[9]進行重新賦值vector<double>::iterator it;    //定義迭代器變量itfor(it=v.begin();it!=v.end();it++)  //從首元素到最后一個元素的下一個元素位置結束{cout << *it << endl;//將這10個double類型的元素輸出出來}cout<<endl;v.push_back(2);//將2這個元素從尾部添加到v向量容器中去v.push_back(5);//將5這個元素從尾部添加到v向量容器中去v.insert(v.begin(),8);//在v向量容器的最前面加入一個新元素8v.insert(v.begin()+2,1);//在第二個元素前插入新元素1v.insert(v.end(),3);//在v向量容器末尾追加新元素3for(it=v.begin();it!=v.end();it++)  //從首元素到最后一個元素的下一個元素位置結束{cout << *it << endl;//將這10個double類型的元素輸出出來}cout<<endl;v.erase(v.begin()+1,v.begin()+5);   //元素從0開始計數,將下標為1到5元素給刪除掉[1,5)for(it=v.begin();it!=v.end();it++){cout<<*it<<endl;}cout<<endl;v.clear();  //將v這個向量容器給清空cout<<v.size()<<endl;   //輸出v這個向量容器的大小return 0;
}
4,reverse反向排序算法
#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;int main()
{vector<int>v(10,1); //定義一個整形的大小為10個元素且均為1的v向量容器vector<int>::iterator it;   //定義迭代器變量itfor(int i=0;i<10;i++)   //將v向量容器進行重新賦值9~0;{v[i]=i;}reverse(v.begin(),v.end()); //反向排列向量的從首到尾之間的元素for(it=v.begin();it!=v.end();it++)  //遍歷輸出v向量容器{cout<<*it<<" ";}cout<<endl;return 0;
}
5,對向量容器元素排序(默認排序為升序) sort();
#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;
//C++ const 允許指定一個語義約束,編譯器會強制實施這個約束,允許程序員告訴編譯器某值是保持不變的。如果在編程中確實有某個值保持不變,就應該明確使用const,這樣可以獲得編譯器的幫助。
bool beyond(const int &a,const int &b)//自己定義比較函數,要求由大到小排序
{if(a!=b)return a>b; //如果a,b不相等的話返回a和b之間的最大值else return a<b;    //否則返回a和b之間的最小值
}int main()
{vector<int>v(10,1); //定義一個整形的大小為10個元素且均為1的v向量容器vector<int>::iterator it;   //定義迭代器變量itfor(int i=0;i<10;i++)   //將v向量容器進行重新賦值9~0;{v[i]=i;}sort(v.begin(),v.end());    //sort函數方法默認情況下對向量容器進行升序排列for(int j=0;j<10;j++){cout<<v[j]<<" ";}cout<<endl;sort(v.begin(),v.end(),beyond); //自己定義sort()排序方式for(int k=0;k<10;k++){cout<<v[k]<<" ";}cout<<endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379750.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379750.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379750.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

netsh(二)

netsh 來自微軟的網絡管理看家法寶很多時候&#xff0c;我們可能需要在不同的網絡中工作&#xff0c;一遍又一遍地重復修改IP地址是一件比較麻煩的事。另外&#xff0c;系統崩潰了&#xff0c;重新配置網卡等相關參數也比較煩人&#xff08;尤其是無線網卡&#xff09;。事實上…

java uuid靜態方法_Java UUID getLeastSignificantBits()方法與示例

java uuid靜態方法UUID類getLeastSignificantBits()方法 (UUID Class getLeastSignificantBits() method) getLeastSignificantBits() method is available in java.util package. getLeastSignificantBits()方法在java.util包中可用。 getLeastSignificantBits() method is us…

Google C2Dm相關文章

Android C2DM學習——云端推送&#xff1a;http://blog.csdn.net/ichliebephone/article/details/6591071 Android C2DM學習——客戶端代碼開發&#xff1a;http://blog.csdn.net/ichliebephone/article/details/6626864 Android C2DM學習——服務器端代碼開發&#xff1a;http…

FreeRTOS的列表和列表項

列表和列表項 列表 列表是FreeRTOS中的一個數據結構&#xff0c;概念上和鏈表有點類型&#xff0c;是一個循環雙向鏈表&#xff0c;列表被用來跟蹤FreeRTOS中的任務。列表的類型是List_T&#xff0c;具體定義如下&#xff1a; typedef struct xLIST {listFIRST_LIST_INTEGRI…

string基本字符系列容器

二、string基本字符系列容器 簡介&#xff1a;C語言只提供了一個char類型來處理字符&#xff0c;而對于字符串&#xff0c;只能通過字符串數組來處理&#xff0c;顯得十分不方便。CSTL提供了string基本字符系列容器來處理字符串&#xff0c;可以把string理解為字符串類&#x…

正則表達式(一)

正則表達式概述 1.1什么是正則表達式&#xff1f; 正則表達式(Regular Expression)起源于人類神經系統的早期研究。神經生理學家Warren McCulloch和Walter Pitts研究出一種使用數學方式描述神經網絡的方法。1956年&#xff0c;數學家Stephen Kleene發表了一篇標題為“神經…

42.有“舍”才有“得”

大干世界&#xff0c;萬種誘惑&#xff0c;什么都想要&#xff0c;會累死你&#xff0c;該放就放&#xff0c;該舍就舍。人必須先有所舍&#xff0c;才能有所得&#xff0c;舍如同種子撒播出去&#xff0c;轉了一圈&#xff0c;又帶了一大群子子孫孫回來。“舍”永遠在“得”的…

Java StringBuilder codePointCount()方法與示例

StringBuilder類codePointCount()方法 (StringBuilder Class codePointCount() method) codePointCount() method is available in java.lang package. codePointCount()方法在java.lang包中可用。 codePointCount() method is used to count the number of Unicode code point…

FreeRTOS時間管理

在使用FreeRTOS的過程中&#xff0c;我們通常會在一個任務函數中使用延時函數對這個任務延時&#xff0c;當執行延時函數的時候就會進行任務切換&#xff0c;并且此任務就會進入阻塞太&#xff0c;直到延時完成&#xff0c;任務重新進入就緒態。延時函數舒屬于FreeRTOS的時間管…

set和multiset集合容器

三、①set集合容器 簡介&#xff1a;set集合的目的就是為了快速檢索。set集合容器實現了紅黑樹的平衡二叉檢索樹的數據結構。set集合里面不允許有重復的元素出現&#xff1b;使用set容器前&#xff0c;需要在程序的頭文件中聲明 #include < set >。 函數方法總結&#…

javascript獲取select的值全解

獲取顯示的漢字 document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text 獲取數據庫中的id window.document.getElementById("bigclass").value 獲取select組分配的索引id window.docume…

Java File類void deleteOnExit()方法(帶示例)

文件類void deleteOnExit() (File Class void deleteOnExit()) This method is available in package java.io.File.deleteOnExit(). 軟件包java.io.File.deleteOnExit()中提供了此方法。 This method is used to delete the file or directory when the virtual machine termi…

FreeRTOS隊列

在實際應用中&#xff0c;我們會遇到一個任務或者中斷服務需要和另一個任務進行消息傳遞&#xff0c;FreeRTOS提供了隊列的機制來完成任務與任務、任務與中斷之間的消息傳遞。 0x01 隊列簡介 隊列是為了任務與任務、任務與中斷之間的通信而準備的&#xff0c;可以在任務與任務…

括號配對問題(C)

描述 現在&#xff0c;有一行括號序列&#xff0c;請你檢查這行括號是否配對。 輸入 第一行輸入一個數N&#xff08;0<N<100&#xff09;,表示有N組測試數據。后面的N行輸入多組輸入數據&#xff0c;每組輸入數據都是一個字符串S(S的長度小于10000&#xff0c;且S不是空串…

劇情介紹:“阿甘正傳”

阿甘是個智商只有75的低能兒。在學校里為了躲避別的孩子的欺侮&#xff0c;聽從一個朋友珍妮的話而開始“跑”。他跑著躲避別人的捉弄。在中學時&#xff0c;他為了躲避別人而跑進了一所學校的橄欖球場&#xff0c;就這樣跑進了大學。阿甘被破格錄取&#xff0c;并成了橄欖球巨…

java 方法 示例_Java集合syncedList()方法與示例

java 方法 示例集合類syncList()方法 (Collections Class synchronizedList() method) synchronizedList() method is available in java.util package. syncList()方法在java.util包中可用。 synchronizedList() method is used to return the synchronized view of the given…

FreeRTOS信號量---二值信號量

信號量可以用來進行資源管理和任務同步&#xff0c;FreeRTOS中信號量又分為二值信號量、計算型信號量、互斥信號量和遞歸互斥信號量。 0x01 二值信號量 二值信號量其實就是一個只有一個隊列項的隊列&#xff0c;這個特殊的隊列要么是滿的&#xff0c;要么是空的&#xff0c;任…

Linux 上 rpm包管理工具的基本使用

查詢是否安裝某個包&#xff1a;rpm -q 包名查詢所有已安裝的包&#xff1a;rpm -q a查詢未安裝包的文件信息&#xff1a;rpm -qilp 未安裝的包安裝包&#xff1a;rpm -i 包測試安裝包&#xff1a;rpm -i test 包刪除包&#xff1a;rpm -e 包名測試刪除包&#xff1a;rpm -e te…

ios 內存使用陷阱

在iphone開發過程中&#xff0c;代碼中的內存泄露我們很容易用內存檢測工具leaks 檢測出來&#xff0c;并一一改之&#xff0c;但有些是因為ios 的缺陷和用法上的錯誤&#xff0c;leaks 檢測工具并不能檢測出來&#xff0c;你只會看到大量的內存被使用&#xff0c;最后收到didR…

FreeRTOS軟件定時器

軟件定時器允許設置一段時間&#xff0c;當設置的時間達到后就執行指定的功能函數&#xff0c;被軟件定時器調用的功能函數叫做定時器的回調函數。軟件定時器的回調函數是在定時器服務任務中執行的&#xff0c;所以一定不能在回調函數中調用任何阻塞任務的API函數&#xff0c;比…