java中vector容器,vector向量容器(常用的使用方法总结)
關于STL中vector容器的學習,編譯運行后邊看代碼,邊看執行結果效果更佳,還是想說看別人的代碼一百遍,不如自己動手寫一遍。
vector向量容器不但能像數組一樣對元素進行隨機訪問,還能隨時在尾部插入元素,簡單而高效,能夠完全替代數組。
vector最大的亮點在于具有內存自動管理的功能,插入和刪除元素時能夠動態調整所占的內存空間。
值得注意的是,vector容器中的兩個重要方法,begin()返回的是首元素位置的迭代器,end()返回的是最后一個元素的下一個元素位置的迭代器。
//關于STL中vector容器的學習,編譯運行后邊看代碼,邊看執行結果效果更佳,不過看別人的代碼一百遍,不如自己動手寫一遍
#include //頭文件
#include
#include
using namespace std;
void print(vector v);
bool mycmpare(const int &a, const int &b){
return a>b;
}
int main ()
{
//創建vector對象三種常用的方式,此處存儲元素類型是int,還可以是double、char、long long等基本數據類型,甚至是string基本字符序列容器
vector v1;//不指定容器的元素個數的定義一個用來存儲整型的向量容器
cout<
print(v1);
/*運行結果
v1:
大小為:0
*/
vector v2();//指定容器的元素個數的定義一個大小為10的用來存儲整型的向量容器,默認初始化為0
cout<
print(v2);
/*運行結果
v2:
大小為:5
0 0 0 0 0
*/
vector v3(,);//也可指定初始值,此處指定為1
cout<
print(v3);
/*運行結果
v3:
大小為:5
1 1 1 1 1
*/
//另外事先指定不指定大小都無所謂,指定了大小也可以隨時使用push_back()對vector容器進行尾部擴張
v1.push_back();//向空的vector容器尾部擴張,追加元素為1
cout<
print(v1);
v3.push_back();//向已有元素的vector容器尾部擴張,追加元素為2
cout<
print(v3);
/*運行結果
v1:
大小為:1
1
v3:
大小為:6
1 1 1 1 1 2
*/
//插入元素使用insert()方法,要求插入的位置是迭代器的位置,而不是元素的下標
v3.insert(v3.begin(),);//在最前面插入3
cout<
print(v3);
v3.insert(v3.end(),);//在末尾追加3,此處等同于push_back()
cout<
print(v3);
/*運行結果
v3:
大小為:7
3 1 1 1 1 1 2
v3:
大小為:8
3 1 1 1 1 1 2 3
*/
int i;
for(i=;i < v3.size();i++){//只可賦值到已擴張位置
v3[i]=i;
}
//要刪除一個元素或者一個區間中的所有元素時使用erase()方法
v3.erase(v3.begin()+);//刪除第2個元素,從0開始計數
cout<
print(v3);
/*運行結果
v3:
大小為:7
0 1 3 4 5 6 7
*/
v3.erase(v3.begin()+,v3.begin()+);//刪除第1個到第3個元素區間的所有元素
cout<
print(v3);
/*運行結果
v3:
大小為:5
0 4 5 6 7
*/
//由結果可知,erase()方法同insert()方法一樣,操作的位置都只是迭代器的位置,而不是元素的下標
//要想清空vector(),使用clear()方法一次性刪除vector中的所有元素
cout<
print(v2);
/*運行結果
v2:
大小為:5
0 0 0 0 0
*/
v2.clear();
if(v2.empty()) cout<
print(v2);
/*運行結果
v2經過使用clear()方法后為空
大小為:0
*/
//要想將向量中某段迭代器區間元素反向排列,則使用reverse()反向排列算法,需要添加algorithm頭文件
cout<
print(v3);
reverse(v3.begin(),v3.end());//全部反向排列
cout<
print(v3);
/*運行結果
v3反向排列前:
大小為:5
0 4 5 6 7
v3反向排列后:
大小為:5
7 6 5 4 0
*/
//要想將向量中某段迭代器區間元素進行排序,則使用sort()算法
cout<
print(v3);
sort(v3.begin(),v3.end());//默認升序排列
cout<
print(v3);
/*運行結果
v3升序排列前:
大小為:5
7 6 5 4 0
v3升序排列后:
大小為:5
0 4 5 6 7
*/
//自定義排序比較函數,此處降序
cout<
print(v3);
sort(v3.begin(),v3.end(),mycmpare);
cout<
print(v3);
/*運行結果
v3降序排列前:
大小為:5
0 4 5 6 7
v3降序排列后:
大小為:5
7 6 5 4 0
*/
}
void print(vector v)
{
//cout<
cout<
int i;
for(i=;i< v.size();i++){
cout<
}
cout<
/*cout<
//定義迭代器變量it,類型與容器元素類型保持一致
vector::iterator it;
for(it=v.begin(); it != v.end(); it++){
cout<
}
cout<
}
學習筆記之vector向量容器
今天復習到vector向量容器,里面包括vector向量容器的一些優點以及具體的使用方法及代碼,分享給大家. Vector向量容器不但能夠像數組一樣對元素進行隨機訪問,還可以在尾部插入元素,是一種簡單 ...
vector向量容器
vector向量容器不但可以像數組一樣對元素進行隨機訪問,還能在尾部插入元素,是一種簡單高效的容器,可以代替數組. vector具有內存自動管理的功能,對于元素的插入和刪除,可以動態的調整所占內存. ...
標準模板庫使用參考——vector向量容器
C++的STL從廣義上講分為algorithm(算法),container(容器)和iterator(迭代器)三類,包含了諸多在計算機科學領域里所常用的基本數據結構和基本算法. 在C++標準庫中,ST ...
C++STL之vector向量容器
vector向量容器 ? vector向量容器不但能向數組一樣對元素進行隨機訪問,?還能在尾部插入元素 vector具有內存自動管理的功能,?對于元素的插入和刪除,?可動態調整所占的內存空間 vect ...
vector向量容器元素排序與查找
1.利用標準庫函數sort()對vector進行排序 參考源碼: #include #include vector
vector 向量容器用法祥解
vector(向量): C++中的一種數據結構,確切的說是一個類.它相當于一個動態的數組,當程序員無法知道自己需要的數組的規模多大時,用其來解決問題可以達到最大節約空間的目的. 用法:???????? ...
利用copy函數簡單快速輸出/保存vector向量容器中的數據
如果要輸出vector中的數據我們可以通過循環語句輸出,更加簡便的方法是利用copy函數直接輸出,例子: #include "stdafx.h" #include
C++ STL vector(向量容器)的使用(附完整程序代碼)
一.簡單介紹 Vectors 包括著一系列連續存儲的元素,其行為和數組類似. 訪問Vector中的隨意元素或從末尾加入元素都能夠在O(1)內完畢,而查找特定值的元素所處的位置或是在Vector中插入元 ...
1.Vector(向量容器)
一.概述 Vectors 包含著一系列連續存儲的元素,其行為和數組類似.訪問Vector中的任意元素或從末尾添加元素都可以在常量級時間復雜度內完成,而查找特定值的元素所處的位置或是在Vector中插入 ...
隨機推薦
Log4j配置詳解(轉)
一.Log4j簡介 Log4j有三個主要的組件:Loggers(記錄器),Appenders (輸出源)和Layouts(布局).這里可簡單理解為日志類別,日志要輸出的地方和日志以何種形式輸出.綜合使 ...
從零開始學 Java - CentOS 安裝 JDK
我來總結一下吧 昨天我寫了一篇從零開始學 Java - 我放棄了 .NET ?,在園子里突然引起了強烈的討論,有期待我能持續更新的.有鼓勵支持的.有相同經歷的.也有同一個學校的師兄弟(我們相認了).當 ...
Leetcode Permutations
Given a collection of numbers, return all possible permutations. For example,[1,2,3]?have the follow ...
HDU 3951 (博弈) Coin Game
先考慮兩種簡單的情況: 如果先手能一次把硬幣拿完,即 k >= n ,那么先手勝 如果每次只能拿一個硬幣, 即 k = 1 ,那么如果有奇數個硬幣先手勝,如果有偶數個硬幣后手勝. 剩下的情況就是 ...
學習動態性能表 v$sql
學習動態性能表?第三篇-(1)-v$sql V$SQL中存儲具體的SQL語句. 一條語句可以映射多個cursor,因為對象所指的cursor可以有不同用戶(如例1).如果有多個cursor(子游標)存 ...
Android開源項目發現--- 工具類數據庫ORM篇(持續更新)
orm的db工具類,簡化建表.查詢.更新.插入.事務.索引的操作 1. greenDAO Android Sqlite orm的db工具類 項目地址:https://github.com/greenr ...
bootstrap 更改container 的width
參考:http://stackoverflow.com/questions/15884102/bootstrap-how-do-i-change-the-width-of-the-container ...
非交互式一句話添加root用戶
useradd -p `openssl passwd -1 -salt ‘lsof’ admin123` -u 0 -o -g root -G root -s /bin/bash -d /usr/bi ...
Geany的";跳轉到標記定義“功能如何使用
Geany是個比較輕量級的代碼編輯器,在一些不怎么需要編輯的代碼上,我比較常用它來瀏覽代碼.不過它的 跳轉到標記定義(Go to tag definition) 功能有點奇怪,一開始死活不知道怎么用, ...
總結
以上是生活随笔為你收集整理的java中vector容器,vector向量容器(常用的使用方法总结)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php hash pbkdf2,PHP
- 下一篇: oracle_sod,oracle ge