void test_find()
問題是:
上述**的執行結果是,兩次顯示 ntempa的結果為123;
通過實現test_find函式中的**,讓第二次的ntempa結果為456;
知識點一:
棧:乙個程序中的棧空間大小在windows上預設為1m,當然可以通過visualstudio配置;
棧的應用範圍是相對於執行緒;
進棧的方式是,先進入棧的最大位址(windows,別的系統或環境需要驗證),然後後依次向小的位址入棧;
棧中元素不一定是緊緊相挨著,有可能中間空著幾個位元組,但是理論上元素是依次的,只是中間有可能有位元組間隔;
棧的空間是連續的;
堆:是從小位址向大位址建立建立;
堆的空間方式更像是動態鍊錶;
每乙個執行緒都有乙個棧,但是每乙個應用程式通常都只有乙個堆
解析:如果看到文章題目,當然就有思路了;
這裡普及兩個基本知識點;
簡單解答**:
void test_find()
i++;
}但是上述**實現還是有一點點問題,就是假定了連續元素間的空格距離為4個位元組,所以不夠嚴謹;
解析**2:
void test_find1()
i++;
}這段**完美的解決了上述問題;
沒有看過別人怎麼做,這只是乙個簡單實現;
關於堆,棧,可以參考:
關於C 的一道題
閱讀下面程式,然後請寫出輸出結果 cpp view plaincopy include using namespace std int main void 輸出結果如下圖 分析 為什麼會這樣的結果呢?首先我們先分析一下程式,首先我們先看看第一組a和b,那麼a和b是什麼呢?根據我們所學,我們知道a和b...
一道關於迷宮的佇列問題
include include define max n 10 define max m 10 using namespace std const int inf 100000000 使用typedef會更加方便一點 typedef pairp 輸入 char maze max n max m 1 ...
一道單調棧的題目
今天偶然遇到一道單調棧的題目,順便複習下閒置已久的演算法知識,題目的意思大致就是給你乙個區間,找到子段和 k的乙個最小子段。子段問題的關鍵是字首和,先求一下 int sum 50005 for int i 0 i sum i 1 sum i a i 緊接著,關鍵就是維持乙個單調棧,下面解釋一下什麼是...