Вот, например, хороший ответ.
This rule means that if the header uses a type - such as 'FILE *' or 'size_t' - then it must ensure that the appropriate other header ( or for example) should be included. A corollary, often forgotten, is that the header should not include any other header that is not needed by the user of the package in order to use the package. The header should be minimal, in other words.
Вкратце: включений в заголовке должно быть как можно меньше, при этом в нём должны быть включены все заголовки, необходимые для беспрепятственной работы кода, в нём описанного.
В вашем случае, если vector используется
исключительно в реализации и в описании
blackbox'a никак себя не проявляет, включать его нужно в .cpp