// future example
#include <future>         // std::async, std::future
#include <cmath>          // std::sqrt
#include <iostream>       // std::cout

const int N = 1000;

int main ()
{
	double *a = new double[N];
	double *b = new double[N];
	for (int i = 0; i < N; ++i)
	{
		a[i] = i;
	}
	
	std::future<void> *futures = new std::future<void>[N];
	for (int i = 0; i < N; ++i)
	{
		futures[i] = std::async([&a, &b, i]
		{
			b[i] = std::sqrt(a[i]);
		});
	}
	/*
	for (int i = 0; i < N; ++i)
	{
		futures[i].get();
	}*/
	
	for (int i = 0; i < N; ++i)
	{
		std::cout << b[i] << std::endl;
	}
	
	return 0;
}