]> git.sesse.net Git - casparcg/blob - common/utility/algorithm.h
2.0.0.2: Added some utility algorithms.
[casparcg] / common / utility / algorithm.h
1 #pragma once\r
2 \r
3 namespace caspar {\r
4 \r
5 template<typename T>\r
6 typename T::value_type pop_front(T& container)\r
7 {\r
8         auto item = std::move(container.front());\r
9         container.pop_front();\r
10         return std::move(item);\r
11 }\r
12 \r
13 template<typename T>\r
14 std::vector<T> split(const T& container, size_t size)\r
15 {\r
16         std::vector<T> result;\r
17         const auto last = container.end() - container.size() % size;    \r
18         for(auto it = container.begin(); it != last; it += size)\r
19                 result.push_back(T(it, it + size));\r
20         result.push_back(T(last, container.end()));\r
21 \r
22         return std::move(result);\r
23 }\r
24 \r
25 }