読者です 読者をやめる 読者になる 読者になる

コード量を減らすためだけのラムダ式活用

C++

※このエントリではIDEによるコード補完は一切考慮していません


【before】

#include <vector>

int main()
{
    std::vector<int> v;

    v.reserve(5);
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    v.push_back(4);
    v.push_back(5);
}

v.push_backって打つのめんどい><。



【関数に切り出してみる】

#include <vector>

template <class T>
void push(std::vector<T>& v, const T& x)
{
    v.push_back(x);
}

int main()
{
    std::vector<int> v;

    v.reserve(5);
    push(v, 1);
    push(v, 2);
    push(v, 3);
    push(v, 4);
    push(v, 5);
}

vがジャマ



ラムダ式を使ってみる】

#include <vector>
#include <functional>

int main()
{
    std::vector<int> v;

    std::function<void(int)> push = [&v] (int x) { v.push_back(x); };

    v.reserve(5);
    push(1);
    push(2);
    push(3);
    push(4);
    push(5);
}

お、これはアリなんじゃないか。