#include#include#include#include#include#includeusing namespace std;
//單純資料處理演算法
/*adjacent_find 尋找相鄰滿足條件的元素對 返回前乙個的迭代器
count 統計某值出現的次數
count_if 統計滿足條件的值的個數
max_element min_element
partation 劃分函式
search_n 尋找n個連續滿足條件的子串行 返回開始的迭代器
unique 去重(至針對已近排好序的陣列 公升降均可
*/templateclass func
};templateclass count
bool operator()(const t& val)const
private:
t m_t1, m_t2;
};templateclass par
};templateclass search
};int main(void)
; vectorvec(a,a+sizeof(a)/sizeof(a[0]));
cout << *adjacent_find(vec.begin(),vec.end(),func())<(2,4)) << endl;
//這樣寫法是錯誤的 因為 第三個引數 必須是 乙個實值(可以使用count_if)
cout << "count_if......"<(2,4)) << endl;
//當函式物件需要 引數時 可以寫為靜態成員 或者 私有成員
//今天成員 在類外賦值 私有成員 在建構函式傳遞
copy(vec.begin(),vec.end(),ostream_iterator(cout," "));
puts("");
cout << "the val is:...." << *find_if(vec.begin(), vec.end(), count(2, 4)) << endl;
//返回滿足條件的迭代器 失敗時返回end(),此處 沒有判斷
vector::iterator ite=remove(vec.begin(),vec.end(),6);
copy(vec.begin(), vec.end(), ostream_iterator(cout, " "));
//0 1 2 4 5 7 8 6 7 8
//-------------。。。。 remove並非刪除 而是用其它元素進行覆蓋
//迭代器 指向 6 真正刪除 需要用erase(f,l);
//於此對應 還有 remove_if 與remove類似
puts("");
//replace replace_if 如出一轍
//需要說明的是 兩個函式 最後乙個引數 都是需要替換的 新值 不可在 函式中指出
//reverse 逆序函式 用的很多(需要雙向迭代器 slist什麼的就不行)
vectorvec1(a, a + sizeof(a) / sizeof(a[0]));
vectorvec2(a,a+5);
ite = find_end(vec1.begin(), vec1.end(), vec2.begin(), vec2.end());
//在 [f1,l1)區間中尋找[f2,l2)最後一次出現的位置 也可以指定二元運算 f返回迭代器
//find_first_of 與find_end 是剛好對立的
cout << "the pos val is :" << *ite << endl;
cout << *max_element(vec1.begin(),vec1.end())<
cludes!");
} partition(vec1.begin(), vec1.end(),par());
copy(vec1.begin(), vec1.end(), ostream_iterator(cout, " "));
//滿足條件放在左邊 不滿足放在右邊
puts("");
sort(vec1.begin(), vec1.end());
ite = unique(vec1.begin(), vec1.end());
//去重 但不刪除 只是進行覆蓋 尾部有殘餘資料
//陣列最好使用unique_copy 因為陣列無法縮小其大小
copy(vec1.begin(), vec1.end(), ostream_iterator(cout, " "));
//0 1 2 4 5 6 7 8 7 8
puts("");
/* vec1.erase(ite,vec1.end());
//這樣才能真正去重
copy(vec1.begin(), vec1.end(), ostream_iterator(cout, " "));
puts("");
//0 1 2 4 5 6 7 8
*/ //search 與find_first_of 是一樣的
vec1 = vector(a, a + sizeof(a) / sizeof(a[0]));
copy(vec1.begin(), vec1.end(), ostream_iterator(cout, " "));
//在該區間 尋找
ite = search_n(vec1.begin(),vec1.end(),3,3,search());
//尋找連續3個能被3整除的子串行
//iterator search_n(f,l,count,val,comp)
//f l為區間 count為子串行出現次數 val為comp二元運算的第二個引數值
//函式會將 區間內的元素代入 comp中的第乙個 引數
if (ite != vec1.end())
return 0;
}
資料處理函式
資料處理函式 1,計算字串長度 主流資料庫系統都提供了計算字串長度的函式,在mysql oracle db2中這個函式 名稱為length,而在mssqlserver中這個函式的名稱則為len。這個函式接受乙個字串類 型的字段值做為引數,返回值為這個字串的長度。下面的sql語句計算每乙個名稱不為空 ...
資料處理函式
1 lower 轉換小寫 2 upper 轉換大寫 3 substr 擷取子字串 4 length 取長度 例如查詢員工姓名長度為5的 5 trim 去空格,去掉的是首尾空格 6 to date 將字串轉換成日期 7 to char 將日期或數字轉換成字串 8 to number 將字串轉換成數字 ...
資料處理函式
我們先來看看常用的文字處理函式都有哪些 函式說明 left 返回串左邊的字元 lenght 返回串的長度 locate 找出串的乙個字串 lower 將串轉換為小寫 ltrim 去掉串左邊的空格 rtrim 去掉串右邊的空格 right 返回串右邊的字元 soundex 返回串的soundex值 s...