練習10.22:重寫統計長度小於等於6的單詞數量的程式,使用函式代替lambda。
答:見練習10.22.cpp
練習10.23:bind接受幾個引數?
答:不一定,至少接受乙個引數繫結。詳見 p356 bind的引數一節
練習10.24:給定乙個string,使用bind和check_size在乙個int的vector中查詢第乙個大於string長度的值。
答:見 練習10.24.cpp
練習10.25:在10.3.2節(第349頁)的練習中,編寫了乙個使用partition的biggies版本。使用check_size和bind重寫此函式。
答:見 練習10.25.cpp
練習10.22
/*
*練習10.22
*2015/8/20
*問題描述:練習10.22:重寫統計長度小於等於6的單詞數量的程式,使用函式代替lambda。
*說明:對bind的使用
*/#include
#include
#include
#include
#include
using
namespace
std;
using
namespace
std::placeholders;
bool check_size(const
string &s, string::size_type sz)
int main()
; vector
::size_type sz = 6;
int cnt1 = count_if(words.begin(),words.end(),[sz](const
string &s)); //長度大於6的
cout
<< "total numbers of words is: "
<< cnt1 << endl;
auto check6 = bind(check_size,_1,sz);
int cnt = count_if(words.begin(), words.end(),check6);
cout
<< "total numbers of words is: "
<< cnt << endl;
return
0;}
練習10.24
/*
*練習10.24
*2015/8/20
*問題描述:練習10.24:給定乙個string,使用bind和check_size在乙個int的vector中查詢第乙個大於string長度的值。
*說明:對於bind的理解,以及和比較物件的理解,比較的物件是什麼型別,那麼佔位符就應該是哪個,check_size沒有變,變得是bind的佔位符
*/#include
#include
#include
#include
#include
using
namespace
std;
using
namespace
std::placeholders;
bool check_size(const
string &s,string::size_type sz)
int main()
; cout
<< "word is: "
<< word << " size is:"
<< word.size() << endl;
auto f=() ;
cout
<< "numbers : ";
f();
cout
<< endl;
auto check5 = bind(check_size,word,_1);
auto wc = find_if(words.begin(), words.end(),check5);
cout
<< "first number which is bigger than s.size() is:"
<< endl;
cout
<< *wc << endl;
return
0;}
練習10.25
/*
*練習10.25
*2015/8/20
*問題描述:練習10.25:在10.3.2節(第349頁)的練習中,編寫了乙個使用partition的biggies版本。使用check_size和bind重寫此函式。
*說明:學會用bind這一特性,在練習10.19基礎上修改
*//*
*練習10.19
*2015/8/18
*問題描述:練習10.19:用stable_partition重寫前一題的程式,與stable_sort類似,在劃分後的序列中維持原有元素的順序。
*說明:在練習10.18的基礎上改動,與原來程式不同的地方,stable_partition後,單詞順序和之前一致
*//*
*練習10.18
*2015/8/18
*問題描述:練習10.18:重寫biggies,用partition代替find_if。我們在10.3.1節練習10.13(第345頁)中介紹了partition演算法。
*說明:在練習10.16的基礎上改動
*//*
*練習10.16
*2015/8/18
*問題描述:練習10.16:使用lambda編寫你自己版本的biggies。
*/#include
#include
#include
#include
#include
using
namespace
std;
using
namespace
std::placeholders;
bool isshorter(const
string &s1, const
string &s2)
void elimdups(vector
words)
bool check_size(const
string &s, string::size_type sz)
string make_plural(size_t ctr, const
string &word, const
string &ending)
void biggies(vector
&words, vector
::size_type sz)
); //auto wc = find_if(words.begin(), words.end(),[sz](const string &a));
//auto wc = partition(words.begin(), words.end(),[sz](const string &a));//使用partition代替find_if函式
//auto wc = stable_partition(words.begin(), words.end(),[sz](const string &a));//使用stable_partition代替partition
auto check = bind(check_size,_1,sz);//2015/8/20改動 使用bind check_size
auto wc = stable_partition(words.begin(), words.end(),check);
auto count = words.end() - wc;
cout
<< count << " "
<< make_plural(count,"word", "s") << " of length "
<< sz << " or longer"
<< endl;
for_each(wc, words.end(),(const
string &s));
cout
<< endl;
}int main()
; vector
::size_type sz = 5;
biggies(words,sz);
return
0;}
C Primer第五版 2 4 3節練習
練習2.30 對於下面的這些語句,請說明物件被宣告成了頂層const還是底層const?const int v2 0 v2的值不能被改變,所以這是乙個頂層const int v1 v2 int p1 v1,r1 v1 const int p2 v2 p2存放的是v2的位址,不能間接改變v2的值,但p...
C Primer第五版 2 5 3節練習
練習 2.36 關於下面的 請指出乙個變數的型別以及程式結束時它們各自的值。include int main 練習 2.37 賦值是會產生引用的一類典型表示式,引用的型別就是左值的型別。也就是說,如果i是int,則表示式 i x的型別是int 根據這一特點,請指出下面的 中每乙個變數的型別和值。in...
C Primer第五版 3 2 2節練習
練習3.2 編寫一段程式從標準輸入中一次讀入一整行,然後修改該程式使其一次讀入乙個詞。練習3.3 請說明string類的輸入運算子和getline函式分別是如何處理空白字元的。練習 3.4 編寫一段程式讀入兩個字串,比較其是否相等並輸出結果。如果不相等,輸出較大的那個字串。改寫上述程式,比較輸入的兩...