2009年2月25日

C++ & Windows API: for_each and DeleteObject

當有一個HBITMAP Array需要釋放時,一般的寫法會是:

  for (int i = 0; i < numOfElement; ++i)
DeleteObject(bitmaps[i]);

另一種寫法是利用C++ STL:

  std::for_each(bitmaps, bitmaps + numOfElement, DeleteObject);

除了從原本的兩行,變成一行。此種用法也可適用於不同「容器」,不論是std::vector, std::list, std::deque:

  std::for_each(vBmp.begin(), vBmp.end(), DeleteObject);
CloseHandle, DestroyIcon等接收一個參數的API,都適用上述寫法。

沒有留言:

Google Analytics

Powered By Blogger
Get Paint.NET!