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 阻...