最近就看了一下stl的內容,總結一下,stl就是乙個資料容器,所有的操作都是對容器裡的資料進行操作
1,stack棧,這是乙個先進後出的資料結構,它只有乙個出口,只能對棧頂元素進行操作,就像乙個教室只有乙個門,先進去的人只能後出。
stack儲存在
定義:stackstack_name;
如:stack a,stackc;
操作:empty() – 返回bool型,表示棧內是否為空 (s.empty() )
size() – 返回棧內元素個數 (s.size() )
top() – 返回棧頂元素值 (s.top() )
pop() – 移除棧頂元素(s.pop(); )
push(data_type a) – 向棧壓入乙個元素 a(s.push(a); )
#include#include#include#includeusing namespace std;
int main()
執行的結果就是 「
03 3 2」
2queue佇列
queue是一種先進先出的資料結構,從底端加入元素,從頂端取出元素。就像乙個教室有兩個門一邊進學生一邊出學生,吧元素全部壓入後對底端元素處理,
queue包含在標頭檔案標頭檔案:
定義:queue queue_name;
如:queue q;
(1)push();就是從已有元素後面增加元素
queueq;
q.push("coding");
cout<(2)front();返回佇列的第乙個元素的值,這裡只是返回,並沒有把它剔除佇列。
queueq;
q.push("hahahaha");
q.push("abcd");
cout<(3)back();返回佇列的最後乙個元素的值。
queueq;
q.push("hahahaha");
q.push("abcd");
cout<(4)pop();刪除第乙個元素
queueq;
q.push("hahahaha");
q.push("bald man!");
pop();
cout<(5)empty();判斷佇列是否為空,若為空則返回true。
queueq;
cout<(6)size();返回佇列元素個數
queueq;
q.push("hahahaha");
q.push("abcd");
cout<3,vector容器標頭檔案為
vectorv1; // 建立空容器,其物件型別為string類
vectorv2(10); // 建立有10個具有初始值(即空串)的string類物件的容器
vectorv3(5, "hello"); // 建立有5個值為「hello」的string類物件的容器
vectorv4(v3.begin(), v3.end()); // v4是與v3相同的容器(完全複製)
bool empty() ; // 如果為容器為空,返回1;否則返回0
size_type max_size(); // 返回容器能容納的最大元素個數
size_type size(); // 返回容器中元素個數
size_type capacity(); // 容器能夠儲存的元素個數,有:capacity() >= size()
void resize(size_type n, t x = t()); // 確保返回後,有:size() == n;如果之前size()#include#include using namespace std;
void main()
} for( j = 0; j < 10; j++ )
cout<< endl;
}}
#include #include #include using namespace std;
int main()
cout << "size: " << a.size() << endl;//輸出這個陣列的長度
a.pop_back();將最尾端元素刪除即刪除1
a[0] = 1;
cout << "size: " << a.size() << endl;//長度為4
for (int i = 0; i < (int)a.size(); ++i)
cout << endl;
return 0;
}輸出結果是
size: 5
size: 4
1,4,
3,2,
4,sort排序標頭檔案是
sort排序預設從小到大排序
sort(a,a+n)
如果想從大到小排序就要寫乙個函式
bool cmp(int a,int b)
sort(a,a+n,cmp)
5,upper_bound 和 lower_bound
upper_bound(begin, end, value);
返回》value的元素的第乙個位置。
lower_bound(begin, end, value);
返回》=value的元素的第乙個位置。
num = ;
lower_bound(num, num + 6, 2)為num + 1
upper_bound(num, num + 6, 2)為num + 3
#include #include #include using namespace std;
int main();
sort(a, a + 10);
for (int i = 0; i < 10; ++i)
{cout《這兩個函式就類似於二分查詢吧
對於upper_bound來說,返回的是被查序列中第乙個大於查詢值的指標,也就是返回指向被查值》查詢值的最小指標,
lower_bound則是返回的是被查序列中第乙個大於等於查詢值的指標,也就是返回指向被查值》=查詢值的最小指標。
所以使用前要對序列進行排序。
目前經過查詢資料和對課件的分析就總結了這些。
2023年3月2日訓練日記
差分約束 2 sat小結 差分約束 1 題目特徵一般比較明顯,是求解關於一組變數的特殊不等式組。2 一般分三種 最長路 求最小值 最短路 求最大值 判斷解是否存在 判負環 3 建邊的時候一定要注意隱含的不等式。根據題目所給資訊靈活加邊加超級源點,靈活應對各種不同的輸出。核心還是建邊。4 經典的應用有...
2023年3月6日訓練日記
上完一整天的課,數分高代連著上的感覺真是爽呀 不過這樣的一天要比閒著充實的多,其實上課有時候還是很有趣的。回到今天的 中,明天一天的空課,做完作業後應該可以多寫幾個 了,雖然也不一定能寫出來,真的很辜負老師對我的期望呀,感覺有點小愧疚。每天忙忙碌碌的不知道一天在幹啥,其實每天真的有這麼忙嗎,捫心自問...
2023年3月30日訓練日記
昨天從下午五點就開始做題,中間有段時間沒做,然後一直做題到一點多,熬得有點晚了,但是那種ac和排名一直往上的感覺簡直不要太爽了,本來一點多還不想睡,但是熬不住了,到了早上七點多室友起床我也跟著醒了,確實困,但是心裡一直想著還有三道題就ak了,心裡有事就睡不著,趕緊起床去洗把臉,然後把電腦拿出來開始做...