я должен выполнить цикл до очереди пуст моего кодакак выполнить цикл до очереди emptyin C++
queue<string> q;
for(int i=0;i<q.size(),i++)
{
// some operation goes here
// some datas are added to queue
}
я должен выполнить цикл до очереди пуст моего кодакак выполнить цикл до очереди emptyin C++
queue<string> q;
for(int i=0;i<q.size(),i++)
{
// some operation goes here
// some datas are added to queue
}
while (!q.empty())
{
std::string str = q.front();
// TODO: do something with str.
q.pop();
}
Его лучше использовать время цикл как:
while (!q.empty()) {
// do operations.
}
Но если вы сделаете это сразу после объявления очереди, вы не получите в цикле, поскольку очередь будет пустой при создании. В этом случае вы можете использовать цикл Do-While как:
queue<string> q;
do {
// enqueue and dequeue here.
}while (!q.empty());
while (! q.empty())
{
}
Да его возможно.
int size=q.size();
for(int i=0;i<size;i++){
std::cout<<"\nCell - "<< q.front();
q.pop();
}
Но люди в основном не использовать для цикла, потому что каждый размер время очереди будет проверяться на счетчик цикла, где в середине п/2 elemets выскочит итерация будет в конечном итоге ubruptly, как размер будет п/2 и i также n/2. Пример, упомянутый ниже.
for(int i=0;i<q.size();i++){
std::cout<<"\nCell - "<< q.front();
std::cout<<"\tSize: - "<< q.size()<<" I value:"<<i;
q.pop();
}
Это тот же код, что и лучший ответ, но с использованием for
петли. Для меня это выглядит чище.
for (; !q.empty(); q.pop())
{
auto& str = q.front();
// TODO: do something with str.
}
Пожалуйста, добавьте объяснения в свой ответ. –
для цикла не требуется экземпляр/инициировать переменную, поэтому мы просто используем ';' чтобы он ничего не делал, условие «до» до тех пор, пока очередь не будет пустой, в конце цикла; вытащите элемент из очереди – Sherlock