or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
進階STL:vector
2021/11/19 電算社第九堂社課
STL ?
standard template library(標準模板庫)
更多的資料結構
複習一下之前遇到的資料結構
std::string 字串
ex
string s = "C8763";
c-array (c式陣列)
ex
int arr[100] = {0};
除了這兩種,我們之後會學到更多種類的資料結構。
STL簡介
將來會學到的東西 一覽
vector
queue
,stack
,deque
set
,map
priority_queue
(可能有更動)
c-array
缺點
使用長度固定(size改不了)
存取size之外的位置,程式會直接crash
vector
What is "vector"
標頭檔
宣告
初始化
Tips: 除了初始化,剩下的時候,c-array的用法,vector都可以用。
但是 vector 多了很多功能
缺點
n維陣列宣告要打超長
(下面會詳細說明)
要打標頭檔
#include<vector>
功能
空間相關功能
v.empty() :
if v 的 size 為 0 ,回傳 1 , else 回傳 0。
v.size() :
輸出 v 的 size
v.resize( , ) :
重新分配空間 - 像是一開始初始化的
( , )
v.clear() :
把 v 清空
位置相關功能
(假設 v 的 size 為 5)
v.front() :
v[0]
的值v.back() :
v[4]
的值v.begin() :
v[0]
的偽指標v.end() :
v[5]
的偽指標// 它常會跟其他功能一起用
資料相關功能
v.push_back()
v.pop_back()
Vector額外功能
刪除或新增中間的第 i 項
v.insert(v.begin() + i, a):在第 i 項插入a
v.erase(v.begin() + i):把第 i 項移掉
algorithm x vector
sort
upper_bound , lower_bound
upper_bound(v.begin() , v.end() , num);
第一個 大於 num 的偽指標(類似
v.begin()
);lower_bound(v.begin() , v.end() , num);
第一個 大於等於 num 的偽指標(類似
v.begin()
);使用前,陣列要先 由小到大 排列過
二維陣列
小練習
卡森社長找到了一個好玩的機器,上面有兩個按鈕,按1可以放入一顆球,按2可以從最前端射出一顆球,現在卡森社長要進行\(n\)輪操作,你可以幫他看看最終機器裡面剩下的球依序為何嗎
輸入說明:輸入一個整數\(n\),代表會有\(n\)輪操作,接著輸入數字\(m\),代表要按的按鈕,若\(m = 1\),則輸入一個數字\(k\),代表放入球的編號
輸出說明:輸出最後機器裡剩下的球依序為何
範例輸入:
範例輸出:
4
我是防雷頁:D
OJ練習題
zerojudge a104排序