Как заполнить стандартный контейнер очередь (queue
) данными из файла с помощью стандартных алгоритмов?
В качестве альтернативного варианта предложу обойтись без вспомогательного контейнера и добавлять сразу в очередь с помощью std::for_each/3:
#include <queue>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>
int main()
{
std::ifstream in("number.txt");
std::queue<int> Q;
std::for_each(std::istream_iterator<int>(in),
std::istream_iterator<int>(),
[&Q](int n)
{
Q.push(n);
});
while(!Q.empty())
{
std::cout << Q.front() << '\n';
Q.pop();
}
}
Например, заполните контейнер, а потом сделайте на его базе очередь:
ifstream in("file");
deque<int> D;
copy(istream_iterator<int>(in),istream_iterator<int>(),
back_inserter(D));
queue<int> Q(D); // Можно move(D), если отдельный дек больше не нужен
while(!Q.empty())
{
cout << Q.front() << endl;
Q.pop();
}
Только стандартные алгоритмы :)
Ага, раз принят ответ, где допускается что-то кроме алгоритмов - то тогда все, конечно, гораздо проще:
for(int n; cin>>n;) Q.push(n);
Все, больше ничего не нужно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день! Я студент технического вуза и самостоятельно пытаюсь выучить c++Что пытаюсь сделать :
Сначала получал дескриптор статика и использовал setwindowtext, но почему-то не робит
Некоторые авторы используют два двоеточия ("::") перед неймспейсом std, например: