0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

for文を使わなくてすむ便利関数

Last updated at Posted at 2019-10-16

#std::for_each関数とmem_funを使ってfor文を省略#

##std::for_each関数とは
【範囲の全ての要素に、指定された関数を適用する】と調べると書いてあります
おもに自分の使うタイミングはイテレータですかね

before
for (auto it = m_objects.begin(); it != m_objects.end(); ) {

こうやってイテレータで最初と最後をfor文で動かすのではなく

after
/*m_objectsの全ての要素にObje()関数を適用する*/
std::for_each(m_objects.begin(), m_objects.end(),Obje();

長さなどは変わらないことも多いけど入れ子が少なくなるのでいいと思う

##std::mem_fun関数とは

クラスのメンバ関数を呼び出すためのテンプレート関数です
ざっくり言いますと、間接的に、メンバ関数を呼び出すことができる
(自分も深くは知らない):relaxed:

##本題
つまりこの二つを組み合わせれば

qiita.rb
for (auto&& obj : m_objects) {obj->Draw3D();}

qiita.rb
std::for_each(m_objects.begin(), m_objects.end(),std::mem_fun(&GameObject::Draw3D));

というようになります

少しでもかっこよく見せたいならいいと思います。:thumbsup:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?