Terje Slettebų wrote:

This example should one case where manipulators are desirable:

    vector< vector<int> > v;
    cout << v ;

Here, each nested vector better go on a separate line. I suggest:

    cout << multiline << v;

where "multiline" manipulator causes each element of the next output
container

to go on separate line.

The above io_format<>'s are intended to be manipulators. You could get this
manipulator with:

io_format<vector<int> >("\n","","") multiline;

You could also make it so that this manipulator set the format for any
container, but in cases where you have arbitrary deep nesting of containers
(like in Peter Dimov's posting), it may be better to set the format on a
per-type basis.
I think that when more that double nesting is involed you have problems
anyway.

Incidentally, I've just made a version that does exactly this. :) I've
attached it, including a test, with this posting.
I've take a look and I like it -- quite lean and does the work. I've some
concerns, though:

1. Are "default" breaces/separators possible?  I'd rather not use
   io_format every time I had to output a vector.
2. Is that good idea to set brace style on vector<int> and vector<double>
   separately? It would increase pword() array, and not sure if this will
   benefit us much. Are nested containers the primary motivation?

- Volodya


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to