1.例子
先舉個例子:分析一下程式的執行結果:看看在三種情況下程式的輸出分別是什麼,有可能出現異常
#pragma once
#include
#include
//////下面是三個自定義的謂詞函式,排序演算法將分別使用這三個函式
//bool compare(int a,int b)
bool compare1(int a,int b)
bool compare2(int a,int b)
////main函式
int main(int arg,char * argv)
//2.結果
三種情況在程式中分別使用後(這裡為了節省空間寫在了一起)的結果是:
(1)第一種情況(
compare函式
)和第三種情況(
compare2函式
)出現錯誤(assert):
(2)第二種情況(compare1函式)下程式執行正常,結果正確。
3.分析
第一種情況
和第三種情況出錯的原因是:
跟蹤到出現異常的stl的源**的乙個函式中,就是下面這個函式:
template inline
bool __clrcall_or_cdecl _debug_lt_pred(_pr _pred, _ty1& _left, _ty2& _right,
const wchar_t *_where, unsigned int _line)
這個函式要求對於呼叫的兩個引數交換位置時不能得到相同的true的結果。也就是為什麼第一種和第三種不行的原因了:a當待比較的兩個值相等的時候,
第三種情況和b當
待比較的兩個值不相等的時候,
第一種情況。
但是對於呼叫的兩個引數交換位置時允許得到相同的false的結果,因為這時根本不進行
兩個引數交換位置操作!!(具體看程式:在第乙個if的時候就返回false了)
在自定義比較函式中如果是相等的情況 返回false就ok了
自定義 LayoutManger需要注意的幾個地方
最近寫銷控表,需要有上萬個資料 的情況,首先感謝 的帖主,給了大家乙個非常好的例子。本文也是根據他的帖子的原理,整理了自己在編寫銷控表的時候遇到的問題。很多demo 在onlayoutchildren 方法中 進行兩個動作,乙個是計算得到真實的最大寬高,乙個是進行layout的動作,我的觀點,一旦外...
Python自定義函式需要注意的問題
python自定義函式需要注意的問題 1.縮排。乙個語句塊要用相同的縮排,兩個縮排相同的邏輯行可以看做可以並列的關係,不可能是所屬關係。return需要跟for對齊,否則 2.遍歷。range n 代表的是從0開始,遍歷到n 1,步長為1 range 1,n 1 代表從1開始,遍歷到n 步長為1 r...
自定義Cell需要注意的問題
使用xib建立cell時需要在設定單元格樣式時使用 nsbundel mainbundel loadnibname xib的檔名 owner self option nil 0 來初始化單元格 而使用純手寫 時,需要使用init方法來初始化cell上的控制項,來避免單元格重影問題,而xib不會出現重...