資料結構之C STL庫

2021-08-28 11:22:19 字數 3429 閱讀 9223

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