c++のstd::generateを使ってみた

こんにちは。ヤマヤタケシです。
std::generateを使ってみました。

便利は便利っぽいのですが、新しいforを使ってもあまりコードが変わらないですね。ただ、forのコードから生成していることを読み取るよりは、generate と書いてあったほうが意味がはっきりするので使ったほうが良い!と弱気に主張してみます。

//生成する std::generate
#include 
#include 
#include 

void print_array( const std::array &list ) 
{
  //表示
  for( auto v : list )
    {
      std::cout << v << ",";
    }
  std::cout << std::endl;
}

int main()
{
  std::array list;

  //1から加算して埋める
  {
    int n = 1;
    std::generate( list.begin(), list.end(), [&n](){ return n++; } );
    print_array( list );
  }

  //うーん、C++11としては、forを使ったほうがやっぱり簡単かなぁ・・・
  {
    int n = 1;
    for( auto &v : list ){ v = n++; }
    print_array( list );
  }

  return 0;
}
generate_test: generate_test.cpp
	g++ generate_test.cpp -std=c++11 -o generate_test
	./generate_test
make -k 
g++ generate_test.cpp -std=c++11 -o generate_test
./generate_test
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,

そんじゃまた。

コメントを残す

メールアドレスが公開されることはありません。