Qual é a diferença entre #include <filename> e #include "filename" em C++?
Olá, colegas! Sou um desenvolvedor C++ iniciante e me deparei com uma questão confusa. Em livros e exemplos de código, vejo duas formas de incluir arquivos de cabeçalho:
1. `#include ` — com colchetes angulares.
2. `#include "myheader.h"` — com aspas.
À primeira vista, não há diferença — ambas as opções incluem o arquivo. Mas notei que as bibliotecas padrão (iostream, vector, string) são sempre escritas com colchetes angulares, enquanto meus próprios arquivos (por exemplo, "myclass.h") são escritos com aspas.
Tentei escrever `#include "iostream"` — o código compilou e funcionou. Já `#include ` gerou um erro "file not found". Por que isso acontece? É apenas uma convenção de estilo ou há uma diferença técnica real?
Estou especialmente interessado em:
- Como o compilador procura arquivos em cada caso?
- A escolha afeta o desempenho?
- Existem situações em que se deve usar exatamente uma opção e não a outra?
Aqui está um exemplo do meu código:
```cpp
// main.cpp
#include // func