C ++ 向量:一個非常簡單的指南

MuskChan發表於2020-04-01

我正在研究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 協議》,轉載必須註明作者和本文連結

從小事做起,大事自然成!

相關文章