我正在研究C ++標準模板庫(或STL)的基礎知識,以提高解決程式設計問題的能力。
在這裡,我們將從向量開始,看看如何使用其功能。
向量
如果您已經使用其他語言(甚至使用C / C ++)處理過陣列,那麼您對STL Vector就會有個不錯的主意。 它是一個可以儲存元素的容器,但是其大小可以動態更改(C / C ++陣列的大小不會動態更改)。
讓我們從初始化開始。 我們可以儲存int,string,float元素,具體取決於我們如何初始化向量。 我們將首先處理整數。
vector<int> v;
你做到了! 很簡單!
現在我們可以儲存一些隨機整數。 魔術方法是“ push_back”。
vector<int> v;
v.push_back(2);
v.push_back(5);
v.push_back(1);
v.push_back(3);
v.push_back(4);
現在我們的向量中儲存了5個數字:
如果使用pop_back(),我們將刪除最後一個元素。
v.pop_back();
要刪除第一個元素,我們可以使用erase()。 我們需要傳遞要刪除的元素位置(迭代器位置)作為引數。
v.erase(v.begin());
我們也可以使用erase刪除最後一個元素。
v.erase(v.begin() + v.size() - 1);
你想得到第一個元素?使用front
v.front();
如果想得到最後一個元素,則使用back
v.back();
如果想知道向量中元素的數量? 使用size。
v.size();
而不是使用
v.size() == 0;
使用空方法(參考有趣的原因)。
v.empty();
對於一個簡單的陣列,我們可以使用[]和=運算子。
v[0] = 10;
v[1] = 20;
v[2] = 30;
cout << v[0] << endl; // 10
cout << v[1] << endl; // 20
cout << v[2] << endl; // 30
從此向量中刪除所有元素。
v.clear();
我們可以使用演算法的排序對向量元素進行升序排列。
#include <algorithm>
sort(v.begin(), v.end());
並以降序方式,將 greater<int>
比較用作第三個引數。
Compare comp =“比較函式物件,如果第一個引數小於第二個引數,則返回true。
#include <algorithm>
sort(v.begin(), v.end(), greater<int>());
想象一下你不想寫
sort(v.begin(), v.end(), greater<int>());
我們可以將此程式碼放入void函式中,並將向量作為引數傳遞。 所以現在的問題是:“我們如何將向量作為引數傳遞?”。 我們有兩種方法:
1. 作為參考:
void desc_sort(vector<int> &v) {
sort(v.begin(), v.end(), greater<int>());
}
desc_sort(v);
2. 作為指標:
void desc_sort(vector<int> *v) {
sort(v->begin(), v->end(), greater<int>());
}
desc_sort(&v);
本作品採用《CC 協議》,轉載必須註明作者和本文連結