示例代码,
#include <iostream>
#include <future>
#include <thread>
#include <vector>
template <typename T, typename R>
struct Task{
typedef std::vector<T> value_source;
typedef std::vector<R> value_result;
Task(uint32_t numbers = 4):m_thread(numbers){
}
template <typename CONVERT>
void go_task(const value_source &source, value_result &result, CONVERT conver_func){
std::vector<std::vector<T>> split_source(m_thread);
std::vector<std::vector<R>> split_result(m_thread);
auto one_size = source.size() / m_thread;
auto sp_size = source.size() % one_size; //find surplus
std::vector<std::future<value_result>> vec_ff;
for(int i = 0; i < m_thread; i++){
if(i == m_thread - 1 && sp_size != 0){ //add