Accelerated C++ 第6章 続き

関数を表すパラメータ定義

慣れてないので気持ち悪いが、明示的にポインタで定義しなくても良い。
アルゴリズムの関数を使い始めると、結構関数(のポインタ)を引数に渡すことが多くなりそう。

課題

本中のソースに関連するもの、面白いくないものはばっさり省略。

6-3

これは、10要素をもつ vector u を別の空の vector v にcopyするプログラム。
ただし、copyはコンテナの拡張を行わないので失敗する。

6-4

copyの第3引数を

  • back_inserter(v)
  • inserter(v, v.begin())

のいずれかに変更するか、手書き?
長短は不明。手書きは別として、back_inserter()の方がinserterより効率的な感があるが。。

6-9

accumulateを使う。

#include <iostream>
#include <string>
#include <vector>
#include <numeric>

int main()
{
    std::vector<std::string>  vs;
    vs.push_back("abc");
    vs.push_back("123");
    vs.push_back("xyz");

    std::string s;
    s = std::accumulate(vs.begin(), vs.end(), s);
    std::cout << s << std::endl;

    return 0;
}