Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

Search Results

45 total results found

11-4 重載 [] 運算子

C++程式設計入門 11-自己實作一個 vector 類別

現在我們還缺一個重要的功能,那就是存取 Vec 裡的值。 試著執行這段程式看看。 [main.cpp] #include <iostream> #include "vec.h" using namespace std; int main() { Vec a; a.push_back(1); cout << "Cap:" << a.capacity() << " Size:" << a.size() << endl; a.push_back(3); cout << "Ca...

11-5 讓 Vec 可以儲存 int 以外的資料型別

C++程式設計入門 11-自己實作一個 vector 類別

目前我們 Vec 雖然可以動態成長,但是只能存放 int 型別的資料,這讓它變得很沒用。 明明只有型別不同,難道我們要寫一個 Vec_int 給 int 用,寫一個 Vec_double 給 double 用,......。 在這裡我們要使用一個新東西 樣版(template),class 是用來產生物件的 [模版],而 template 則是用來產生 class 的 [模版]。 你可以這樣想,在宣告時寫 Vec<int> 這時 template 就會幫我們生成一個可以儲存 int 的 class,宣告時寫 Vec...

12-1 為什麼需要 Iterator?

C++程式設計入門 12-迭代器(Iterator)

在學 STL 之前,我們通常用「下標」存取陣列: int a[] = {3, 1, 4, 1, 5}; for (int i = 0; i < 5; i++) { cout << a[i] << " "; } 容器種類很多(vector、list、set、map……),它們的內部結構不同。傳統的作法是針對不同的容器撰寫其存取元素的成員函數。但是這樣一來,每種容器都有自己的介面,對於寫程式的人來說是個很大的困擾。 Iterator(迭代器) 就是一個「統一的指標」,讓你用相同的寫法走訪不同的容器。

12-2 Iterator 的基本使用

C++程式設計入門 12-迭代器(Iterator)

一、取得 Iterator 函式 說明 v.begin() 指向第一個元素 v.end() 指向最後一個元素的下一位(不可解參考!) v.rbegin() 反向,指向最後一個元素 v.rend() 反向,指向第一個元素的前一位 v.end() 不是最後一個元素,是「越界哨兵(Sentry)」,只能用來判斷是否走完,不能 *v.end()! vector<int> v = {10, 20, 30, 40, 50}; vector<int>::iterator it; // 宣告...

12-3 Iterator 與 STL 演算法

C++程式設計入門 12-迭代器(Iterator)

和容器一樣,STL 也提供了很多通用演算法,適用於不同的資料型別和容器。 在使用 STL 的演算法時,除了要記得引入 <algorithm> 檔頭檔外,通常也需要提供一對 iterator,用來表示演算法作用的範圍。 用來表示範圍的 iterator,是左閉右開區間 [first, last) 一、常用的演算法 1. 排序 sort 排序所有元素 #include <algorithm> vector<int> v = {5, 3, 1, 4, 2}; sort(v.begin(), v.end()); ...