ゼロ単列c++primer(9)から
(1)初心者が犯しやすいエラーは、空のコンテナでfillを呼び出すことです.n,空容器長は0である.
(2)宛先位置反復器にデータを書き込むアルゴリズムは,宛先位置が十分大きく,書き込む要素を収容できると仮定する.(3)アルゴリズムが出力データを収容するのに十分な要素空間を有することを保証する方法は、挿入反復器を用いることである.挿入反復器は、コンテナに要素を追加する反復器です.(4)back_をよく使うinserterは、アルゴリズムの目的の場所として使用する反復器を作成します.
(6)標準ライブラリアルゴリズムはコンテナではなく反復器を操作するため,アルゴリズムは直接要素を削除したり追加したりすることはできない.(7)述語は呼び出し可能な式であり,返される結果は条件として使用できる値である.(8)標準ライブラリアルゴリズムで用いられる述語は主に2種類に分けられる:一元述語と二元述語
(9)lambda式は呼び出し可能なコードユニットを表す.(10)lambdaは、最後の戻り値を使用して戻り値タイプを指定する必要があります.lambdaの関数内に単一のreturn文以外の内容が含まれており、戻り値タイプが指定されていない場合はvoidを返します.(11)lambdaは、そのキャプチャリストに存在する関数のローカル変数をキャプチャしてこそ、関数体でこの変数を使用することができる.(12)キャプチャリストは局所非static変数にのみ使用され、lambdaは局所static変数とその関数の外で宣言された名前を直接使用することができる.(13)lambda、述語、アルゴリズム技術を用いて1列の単語を並べ替えて出力する.
(14)取得された値はlambdaの作成時にコピーされるため、その後の変更はlambda内の対応する値に影響しない.(15)参照方式で変数をキャプチャする場合、lambda実行時に変数が存在することを保証しなければならない.(16)一般的に,潜在的な捕獲による問題を回避するために,捕獲の数をできるだけ減らすべきである.また、可能であれば、ポインタや参照のキャプチャは避けるべきです.(17)暗黙的キャプチャと明示的キャプチャを混合して使用する場合、キャプチャリストの最初の要素は&または=でなければならない.この記号は、デフォルトの取得方法が参照または値であることを指定します.(18)暗黙的キャプチャと明示的キャプチャを混合して使用する場合、明示的キャプチャの変数は暗黙的キャプチャとは異なる方法を使用しなければならない.(19)bind関数は、呼び出し可能なオブジェクトを受け入れ、元のオブジェクトのパラメータリストに適応するために新しい呼び出し可能なオブジェクトを生成する汎用的な関数アダプタと見なされる.
(20)関数refは、コピー可能な所定の参照を含むオブジェクトを返す.標準ライブラリにはcref関数があり、constリファレンスを保存するクラスを生成します.
vector<int> vec;
fill_n(vec.begin(),10,0);// ,
(2)宛先位置反復器にデータを書き込むアルゴリズムは,宛先位置が十分大きく,書き込む要素を収容できると仮定する.(3)アルゴリズムが出力データを収容するのに十分な要素空間を有することを保証する方法は、挿入反復器を用いることである.挿入反復器は、コンテナに要素を追加する反復器です.(4)back_をよく使うinserterは、アルゴリズムの目的の場所として使用する反復器を作成します.
vector<int> vec;
fill_n(back_inserter(vec),10,0);// (5)sort < 。
(6)標準ライブラリアルゴリズムはコンテナではなく反復器を操作するため,アルゴリズムは直接要素を削除したり追加したりすることはできない.(7)述語は呼び出し可能な式であり,返される結果は条件として使用できる値である.(8)標準ライブラリアルゴリズムで用いられる述語は主に2種類に分けられる:一元述語と二元述語
bool isShorter(const string &s1, const string &s2)
{
renturn s1.size() < s2.size();
}
stable_sort(words.begin(),words.end(),isShorter);// 。
(9)lambda式は呼び出し可能なコードユニットを表す.(10)lambdaは、最後の戻り値を使用して戻り値タイプを指定する必要があります.lambdaの関数内に単一のreturn文以外の内容が含まれており、戻り値タイプが指定されていない場合はvoidを返します.(11)lambdaは、そのキャプチャリストに存在する関数のローカル変数をキャプチャしてこそ、関数体でこの変数を使用することができる.(12)キャプチャリストは局所非static変数にのみ使用され、lambdaは局所static変数とその関数の外で宣言された名前を直接使用することができる.(13)lambda、述語、アルゴリズム技術を用いて1列の単語を並べ替えて出力する.
void biggies(vector<string> &words , vector<string>::size_type sz)
{
elimDups(Words);
stable_sort(words.begin() , words.end() , [](const string &a , const string &b){ return a.size() < b.size(); } );
auto wc = find_if( words.begin() , words.end() , [sz](const string &a){ return a.size() >= sz ; });
auto cout = 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 << s << " ";});
cout << endl;
}
(14)取得された値はlambdaの作成時にコピーされるため、その後の変更はlambda内の対応する値に影響しない.(15)参照方式で変数をキャプチャする場合、lambda実行時に変数が存在することを保証しなければならない.(16)一般的に,潜在的な捕獲による問題を回避するために,捕獲の数をできるだけ減らすべきである.また、可能であれば、ポインタや参照のキャプチャは避けるべきです.(17)暗黙的キャプチャと明示的キャプチャを混合して使用する場合、キャプチャリストの最初の要素は&または=でなければならない.この記号は、デフォルトの取得方法が参照または値であることを指定します.(18)暗黙的キャプチャと明示的キャプチャを混合して使用する場合、明示的キャプチャの変数は暗黙的キャプチャとは異なる方法を使用しなければならない.(19)bind関数は、呼び出し可能なオブジェクトを受け入れ、元のオブジェクトのパラメータリストに適応するために新しい呼び出し可能なオブジェクトを生成する汎用的な関数アダプタと見なされる.
auto g(X , Y) = bind(f , a , b , Y , c , X);
(20)関数refは、コピー可能な所定の参照を含むオブジェクトを返す.標準ライブラリにはcref関数があり、constリファレンスを保存するクラスを生成します.