STL C STL vector的基本用法

2021-10-09 22:40:51 字數 1739 閱讀 1335

vector 是容器大小可變的陣列,其分配了一段連續的儲存空間,是一種線性結構,具備陣列直接訪問元素的特性。但相對於陣列而言,其容量並不是固定的,它的大小是動態變化的,由容器自由處理。

vector <

int> v;

vector <

int>v(

10);//大小為10的容器

vector <

int>v(

10,1)

;//大小為10的容器,值全為1

int arr[3]

=;vector <

int>

v(arr,arr+3)

;//用陣列初始化容器

vector <

int>

v(vv.

begin()

,vv.

end())

;//用容器初始化容器, 該區間左閉右開;

//容量

v.size()

;//向量當前大小

v.max_size()

;//向量最大容量

v.capacity()

;//向量實際大小

v.resize()

;//更改向量大小

v.empty()

;//向量判空

//修改

v.push_back()

; v.

pop_back()

; v.

insert

(v.begin()

+ i, a)

;//在第i+1位置插入元素a

v.erase

(v.begin()

);//刪除第乙個元素

v.erase

(v.begin()

, v.

begin()

+i);

// 刪除區間[第1個元素,第i+1個元素), 左閉右開

v.clear()

; v.

swap()

;//訪問

v[i]

//下表訪問,不會檢查是否越界

v.at(i)

//at訪問檢查是否越界,越界則丟擲 out of range

v.front()

; v.

back()

;//遍歷

vector <

int>

:: iterator it;

for(it = v.

begin()

; it!

= v.

end(

); it++

)for

(int i =

0; i < v.

size()

; i++

)//元素翻轉

v.reverse

(v.begin()

, v.

end())

;//元素排序

sort

(v.begin()

, v.

end())

;//預設從小到大

注意:在呼叫erase()後,iter迭代器會變成野指標。處理方法:

(1)令 it = v.begin()

呼叫erase()後, 舊的容器就會重新整理成新的容器,令it重新賦值為新v1的begin()

(2)it = v.erase(it)

令it 賦值於當前刪除元素的下乙個元素的迭代器。

封基和開基的異同

封閉式 簡稱 封基 學名叫 契約型封閉式 開放式 簡稱 開基 學名叫 契約型開放式 相同點大致有 一 都是 管理公司的集合理財產品 二 都屬於面向社會公開募集 的範疇 三 都要執行 法 和規範的會計準則 四 都要按照資產淨值提取管理費 託管費 五 目前 分紅都不需要交納個人所得稅 歡迎補充 不同點有...

Shape Basedmatching的基本流程

1 確定出roi的矩形區域 2 從roi區域提取出影象 可以先進行影象處理 3 建立模板 create shape model 金字塔級數 由numlevels 指定 值越大則 找到物體的時間 越少 anglestart 和angleextent 決定可能的旋轉範圍,anglestep指定角度範圍搜...

ThreadPoolExecutor 的基本原理

先說下 threadpoolexecutor 的基本原理 1.當提交乙個任務時,如果執行緒數沒有達到coresize,那麼就會新建乙個執行緒,並繫結該任務,直到數量到達coresize前都不會重用之前的執行緒 2.到達後,提交的任務都會放到乙個等待佇列中進行等待,執行緒池中的執行緒會使用take 阻...