#include <iostream>
#include <chrono>
#include <vector>
#include <type_traits>

struct S {
	int hui;
	double pizda;
	short dzhigurda;
};

template <typename T> struct uninitialized_allocator {
	using value_type = T;

	template<typename U, typename... Args>
	void construct(U * const ptr, Args&&... args) {}

	T* allocate(size_t n) {
		return allocator.allocate(n);
	}

	void deallocate(T* const ptr, size_t n) {
		allocator.deallocate(ptr, n);
	}

	std::allocator<T> allocator;
};

int main() {
	
	auto t = std::chrono::system_clock::now();
	std::vector<S> v1(1000000);
	std::cout << std::chrono::duration<double, std::milli>(std::chrono::system_clock::now() - t).count() << std::endl;

	t = std::chrono::system_clock::now();

	std::vector<S, uninitialized_allocator<S>> v2(1000000);
	std::cout << std::chrono::duration<double, std::milli>(std::chrono::system_clock::now() - t).count() << std::endl;

	return 0;
}