1 #include2 #include3 #include4 #includeview code5 #include6
using
namespace
std;78
void elimdups(vector &words)914
15void display(vector &words)
1621
22int
main()
2330
31 vectorwords;
32string
str;
33while (in >>str)
34words.push_back(str);
35elimdups(words);
36display(words);
37return0;
38 }
輸出結果:
定製操作
示例**:
1 #include2 #include3 #include4 #includeview code5 #include6
using
namespace
std;78
void elimdups(vector &words)914
15void biggies(vector &words, vector::size_type sz)
16);
19 auto wc = find_if(words.begin(), words.end(), [sz](const
string &a) );
20 auto count = words.end() -wc;
21 for_each(wc, words.end(), (const
string &s) );
22 cout <
2425
intmain()
2633
34 vectorwords;
35string
str;
36while (in >>str)
37words.push_back(str);
38 auto sz = 5;39
biggies(words, sz);
40return0;
41 }
輸出結果:
3. 反向迭代器
1 #include2 #include3 #include4輸出結果:using
namespace
std;56
intmain()7;
9for (auto r_iter = vec.crbegin(); r_iter != vec.crend(); ++r_iter)
10 cout << *r_iter << "";
11 cout <
12return0;
13 }
1 #include 2 #include 3 #include 4 #include 5輸出結果:using
namespace
std;67
void print(int
elem)811
12int
main()
13
【分析】
**首先在乙個deque中插入1到9,然後查詢元素值為2和7的位置,分別賦值給迭代器pos1和pos2,然後輸出,由於stl中的操作總是左開右閉的區間,即[2,7),所以輸出2 3 4 5 6,7不會輸出。
接下來將迭代器轉換成逆向迭代器,再次輸出,對於反向迭代器,由於是反向,所以按邏輯來說它是左開右閉的(這裡我嘗試了rpos2為iterator.end(),rpos1為iterator.begin(),此時輸出全部),即(7,2](事實上還是左閉右開,只不過此時的左和iterator順序一樣)。所以輸出6 5 4 3 2,下面的解釋的很清楚。
足跡C primer 10 函式基礎
c 語言中,名字有作用域,物件有生命週期。名字的作用域是程式文字的一部分,名字在其中可見。物件生命週期是程式執行過程中該物件存在的一段時間。size t count calls int main return 0 和其他名字一樣,函式的名字也必須在使用之前宣告。類似於變數,函式只能定義一次,但可以宣...
C Primer筆記 泛型演算法
地點 基地 泛型演算法並不直接操作容器,而是遍歷兩個迭代器指定的乙個元素範圍,如此將演算法是作用容器分離,實現通用性。泛型演算法多數定義在標頭檔案algorithm中。比如我們想在vector下找到乙個特定值,可實現如下 include include includeusing namespace ...
C primer筆記 泛型演算法
1 泛型演算法 演算法是因為其實現了一些經典演算法的公共介面,如排序和搜尋。泛型是因為他們可以作用於不同型別的元素和多種容器型別甚至是內建陣列。故稱泛型演算法 2 基本上都定義在algorithm和numeric兩個標頭檔案中,這些演算法遍歷由兩個迭代器指定的乙個元素範圍來進行操作,不對容器進行直接...