#include
#include
using
namespace std;
void
print
(vector<
int> v)
cout << endl;
}int
main()
print
(v);
vector<
int>
::iterator it = v.
begin()
;*it =3;
//將3賦值給開頭元素v[0]
it++
;//前移乙個位置
(*it)++;
//v[1]的元素加1
print
(v);
system
("pause");
return0;
}
輸入
2 0 1 4
輸出
2014
3114
二分搜尋方面,stl提供了binary_search、lower_bound、upper_bound。
lower_bound
是一種應用於有序資料範圍內的演算法,它可以返回乙個迭代器,這個迭代器指向第乙個不小於指定值value的元素。通過它,我們既可以找出第乙個能夠恰當插入value的位置,又能維持指定範圍內的元素順序(有序狀態)。
相對的,upper_bound
返回迭代器第乙個大於指定值value的元素。
#include
#include
using
namespace std;
intmain()
;int
*pos;
int idx;
pos =
lower_bound
(a, a +14,
3); idx =
distance
(a, pos)
; cout <<
"a["
<< idx <<
"]="
<<
*pos << endl;
//a[5]=4
pos =
lower_bound
(a, a +14,
2); idx =
distance
(a, pos)
; cout <<
"a["
<< idx <<
"]="
<<
*pos << endl;
//a[2]=2
system
("pause");
return0;
}
輸出
a[5]=4
a[2]=2
#include
#include
#include
using
namespace std;
intmain()
sort
(v.begin()
, v.
end())
;for
(int i =
0; i < v.
size()
; i++
) cout << endl;
system
("pause");
return0;
}
輸入
5
5 3 4 1 2
輸出
1 2 3 4 5
#include
#include
using
namespace std;
intmain()
輸入
8 6 9 10 7
輸出
6 7 8 9 10
管理元素集合的stl容器大致分為兩類:一類是有順序的集合,稱為序列式容器(如vector、list);另一類是經過排序的集合,稱為關聯式容器(如set、map、multiset、multimap)。
set是根據元素值進行排序的集合,所插入的元素在集合中唯一
,不存在重複元素,插入時自動排序,重複元素丟棄
。
函式功能
複雜度size
大小o(1)
clear
清空set
o(n)
begin
返回指向set開頭的迭代器
o(1)
end返回指向set末尾的迭代器
o(1)
insert(x)
插入元素x
o(logn)
erase(x)
刪除元素x
o(logn)
find(x)
如存在則返回該元素迭代器;否則返回s.end()
o(logn)
#include
#include
using
namespace std;
void
print
(set<
int> s)
intmain()
輸出
4:1 4 7 8
3:1 4 8
4:1 2 4 8
not found
map
集合以鍵key
與值value
的組合為元素,每個元素擁有1個鍵和1個值,集合以值作為排序標準。集合中各個元素的鍵唯一,不存在重複。map可以看作是一種能使用任意型別下標的關聯式容器。
#include
#include
#include
using
namespace std;
void
print
(mapint> t)
}int
main()
輸出
3
blue-->1000
red-->32
yellow-->122
4blue-->1000
red-->32
white-->0
zebra-->101010
red-->32
優先順序佇列priority_queue是一種能根據元素優先順序進行插入、引用、刪除操作的佇列。執行這些操作的介面與queue相同。開頭元素永遠都是擁有最高優先順序的元素。 1806 詞典 3 9資料結構之C STL
總時間限制 3000ms 記憶體限制 65536kb 描述 你旅遊到了乙個國外的城市。那裡的人們說的外國語言你不能理解。不過幸運的是,你有一本詞典可以幫助你。輸入 首先輸入乙個詞典,詞典中包含不超過100000個詞條,每個詞條佔據一行。每乙個詞條包括乙個英文單詞和乙個外語單詞,兩個單詞之間用乙個空格...
C STL 資料結構的基本操作
二 string 三 unordered map 介面卡一 棧stack 二 佇列 queue priority queue 總結accumulate 演算法在numeric.h標頭檔案中定義 accumulate 帶有三個形參 頭兩個形參指定要累加的元素範圍,第三個形參則是累加的初值。a stri...
C STL 的底層資料結構
1.vector 底層資料結構為陣列 支援快速隨機訪問 2.list 底層資料結構為雙向鍊錶,支援快速增刪 3.deque 底層資料結構為乙個 控制器和多個緩衝區,詳細見stl原始碼剖析p146,支援首尾 中間不能 快速增刪,也支援隨機訪問 deque是乙個雙端佇列 double ended que...