Comparação entre vetores

Eu estou com um problema. Eu tenho um prédio que é definido por 4 vetores, onde ele é criado randomicamente. É preciso construir uma cidade com prédios, mas como eu estou criando ele randomicamente, antes da criação de um novo prédio, eu preciso comparar com todos os prédios anteriores se eles não serão sobrepostos.

Eu estou iniciando no c++, mas entendo alguma coisa sobre java, normalmente, eu iria usar um compareTo ou algo parecido. Alguém tem uma ideia de como eu posso criar esse método?

Tenho esse código do método que deixa que cria os prédios.

void criaPrediosRand()
{
	//pra utilizar o rand é rand() %. Um ex: face = 1 + rand() % 6; /* random number from 1 to 6
	int x = rand() % 7;
	int y = rand() % 7;
	int divisaoAndares = 0;
	
	int num_predios = rand() % 20;

	//for da cidade
	for (int i = 0; i < num_predios; i++)
	{
		std::cout <<" criando predio "<< std::endl;

		int x = rand() % 10;
		int y = rand() % 10;
		int divisaoAndares = rand() % 10;
		//ERRO
		int andares = rand() % 10;


		//ARRUMAR A MOVIMENTAÇÃO


		//Comparação
		if (!colidiuComPredio(0,0))
		{
			std::cout << " nao colidiu " << std::endl;

			Building b1(x, 0, y, andares, divisaoAndares, 1, 1);
			planos.push_back(b1.predio[0].plano);
			planos.push_back(b1.predio[1].plano);
			planos.push_back(b1.predio[2].plano);
			planos.push_back(b1.predio[3].plano);
			planos.push_back(b1.predio[4].plano);
			city.push_back(b1);
		}

	}

O problema é o algoritmo de intersecção, que mesmo não sendo algo tão complexo, também não é trivial. Já usei Sutherland-Hodgman para isso, que é simples de implementar e eficiente para o que precisava.

Boost.Geometry tem um algoritmo semelhante implementado, em boost::geometry::intersects().

Ainda ta meio confuso, mas vou tentar fazer