El uso de “while” y “do-while” son pensados para no tener un limite numérico sino que se pueden ejecutar de forma indefinida, hasta que una situación externa nos haga terminar ya sea por medio de un condicional o otra situación que surja y termine el ciclo

Ejercicio de menú desear salir infinito hasta que de y

#include <iostream>
using namespace std;

int main(){
    for(int i=0;i< 10000;i++){
        char respuesta = 'a';
        cout<<"Deseas terminar?"<<endl;
        cin >> respuesta;
        if(respuesta == 'y'){
            cout <<"Bye bye"<<endl;
            break;
        }
    }
}

while nos ayudaría a mejorar el código anterior remplazando las variables como que son contadores y el incremento de uno en uno y solamente nos permitiría poner una condición que puede ser de cualquier tipo como if

#include <iostream>
using namespace std;

int main(){
    while(true){
        char respuesta;
        cout<<"Deseas terminar?"<<endl;
        cin >> respuesta;
        if(respuesta == 'y'){
            cout <<"Bye bye"<<endl;
            break;
        }
    }
}

Do-while

#include <iostream>
using namespace std;

int main(){
    do{
        char respuesta;
        cout<<"Deseas terminar?"<<endl;
        cin >> respuesta;
        if(respuesta == 'y'){
            cout <<"Bye bye"<<endl;
            break;
        }
    } while(true);
}