玩轉雙指標
阿新 • • 發佈:2022-12-04
一、演算法簡介
雙指標主要用於遍歷陣列,兩個指標指向不同的元素,從而協同完成任務。也可以延伸到多
個數組的多個指標。
若兩個指標指向同一陣列,遍歷方向相同且不會相交,則也稱為滑動視窗(兩個指標包圍的
區域即為當前的視窗),經常用於區間搜尋。
若兩個指標指向同一陣列,但是遍歷方向相反,則可以用來進行搜尋,待搜尋的陣列往往是
排好序的。
二、指標小知識
對於C++ 語言,指標還可以玩出很多新的花樣。一些常見的關於指標的操作如下
(1)指標與常量
i. const int * p2, 為常量指標,即指向一個常量(const int)的指標。
ii. int * const p3,為常量指標,指標本身是常量,指向的地址不可以變化,但是指向的地址所對應的內容(值)可以變化。
(2)指標函式與函式指標
#include <iostream> // addition是指標函式,一個返回型別是指標的函式 int* addition(int a, int b) { int* sum = new int(a + b); return sum; } int subtraction(int a, int b) { return a - b; } int operation(int x, int y, int (*func)(int, int)) { return (*func)(x,y); } // minus是函式指標,指向函式的指標 int (*minus)(int, int) = subtraction; int main() { int* m = addition(1, 2); // 1 + 2 = 3 int n = operation(3, *m, minus); // 3 -3 = 0 std::cout << *m << std::endl; std::cout << n << std::endl; return 0; }
輸出結果為: