find 返回第二個引數來表示搜尋失敗,否則返回指向第乙個等於給定值的元素的迭代器。
int val = 42;
vector::const_iterator resut = find(vec.cbegin(), vec.cend(), val);
cout << "the value " << val
<< (result == vec.cend() ? " is not present" : "is present" << endl;
int *result = find(begin(ia), end(ia), bal); // 也可以用find來在陣列中查詢值
10.2初識泛型演算法
10.2.1 唯讀演算法
1. find
2. accumulate,該函式接受三個引數,前兩個指出了需要求和的元素的範圍,第三個引數是和的初值。假定vi是乙個整數序列則
int sum = accumulate(vi.cbegin(), vi.cend(), 0); //這條語句將sum設定為vi中元素的和,和的初始值被設定為0.
accumulate的第三個引數的型別決定了函式中使用哪個加法運算子以及返回值的型別
string sum = accumulate(vi.cbegin(), vi.cend(),string( ""));//將所有string元素連線起來
// 錯誤,如果我們傳遞了乙個字串字面值, 用於儲存和的物件的型別將是const char*,但是const char*沒有定義+運算子
string sum = accumulate(vi.cbegin(), vi.cend(), "");
3. equal比較兩個序列,此演算法接受3個引數,前兩個表示第乙個序列的元素範圍,第三個表示第二個序列的首元素equal(begin(p), end(p), r)
10.2.2 寫容器元素的演算法
fill(vec.begin(), vec.end(), 2);// 演算法fill接受一對迭代器表示範圍,還接受乙個值作為第三個引數。fill將給定的這個值賦予輸入序列的每個元素
fill_n(vec.begin(), vec.size(), 2);//功能類似於fill,第二個引數必須小於等於size()
back_inserter接受乙個指向容器的引用,返回乙個與該容器繫結的插入迭代器。當我們通過此迭代器賦值時,賦值運算子會呼叫push_back講乙個具有給定值的元素新增到容器中。
vectorvec; //空向量
auto it = back_inserter(vec);
*it = 42; //vec現在有乙個元素,值為42
結合fill_n給容器賦值fill_n(back_inserter(vec), 10, 2);新增10個2到vec
拷貝演算法(copy)
copy演算法是列乙個像目的位置迭代器指向的輸出序列中的元素寫入資料的演算法。此演算法接受三個迭代器,前兩個表示乙個輸入範圍,第三個表示目的序列的起始位置。此演算法將輸入範圍中的元素拷貝到目的序列中,傳遞給copy的目的序列至少要包含於輸入序列一樣多的元素。
內建陣列的拷貝
int a1 = ;
int a2[sizeof(a1) / sizeof(*a1)];
auto ret = copy(begin(a1), end(a1), a2);
replace演算法讀入乙個序列,並將其中所有等於給定值的元素都改為另乙個值。此演算法發接受四個引數:前兩個是迭代器,表示輸入序列,後兩個乙個是要搜尋的的值,另乙個是新值。它將所有等於第乙個值的元素替換為第二值
replace(ilst.begin(), ilst.end(), 34, 42); //將所有值為34的元素替換為42
sort排序,接受一對範圍迭代器。
unique重排vector,是的不重複出現的元素出現在vector的開始部分
sort(words.begin(), words.end());
auto end_unique = unique(words.begin(), words.end());
words.erase(end_unique, words.end());
3 < x < 5 必須寫成 x > 3 && x < 5
x >= 5的寫法是正確的
stable_sort 演算法引數和功能與sort類似,只是這種演算法非常穩定,可以維持相等元素的原有順序
partiton演算法,接受乙個謂詞,對容器內容進行劃分,是的謂詞為true的值會排在容器的前半部分,而使的謂詞為 false的會排在後半部分。演算法返回乙個迭代器,指向最後乙個使謂詞為true的元素之後的位置。
stable_partition與sort_sort類似,非常穩定,可以在劃分後的序列中維持原有元素的順序
《TCP IP詳解1》筆記(第1章 概述)
分層 tcp ip通常被認為是乙個四層協議系統,每一層負責不同的功能 1 鏈路層,有時也稱作資料鏈路層或網路介面層,通常包括作業系統中的裝置驅動程式和計算機中對應的網路介面卡。它們一起處理與電纜 或其他任何傳輸媒介 的物理介面細節。2 網路層,有時也稱作網際網路層,處理分組在網路中的活動,例如分組的...
10 筆記go語言 併發
10.筆記go語言 併發 goroutine 是由 go 執行時環境管理的輕量級執行緒。go f x,y,z 開啟乙個新的 goroutine 執行 f x,y,z f x y 和 z 是當前 goroutine中定義的,但是在新的 goroutine 中執行 f goroutine 在相同的位址空...
UNIX上機實驗10筆記
1.在linux系統中,除編號為1的程序 init程序 外,其它程序都有對應的父程序 2.通常程序的pid會被順序編號,即新建立的程序pid通常為前乙個程序的pid加1.但是linux系統上pid的取值範圍是有限的,因此若當前程序的pid已為最大值,系統建立下乙個程序的pid就必須使用閒置的數值。3...