Juha Nieminen
10/29/2008 11:16:00 PM
Obnoxious User wrote:
> #include <vector>
> #include <map>
> #include <iterator>
> #include <algorithm>
> #include <iostream>
>
> template<typename C, typename M>
> class key_inserter :
> public std::iterator<std::output_iterator_tag,void,void,void,void> {
> private:
> C & d_coll;
> public:
> key_inserter(C & c) : d_coll(c) {}
> key_inserter & operator*() { return *this; }
> key_inserter & operator++() { return *this; }
> key_inserter & operator++(int) { return *this; }
> key_inserter &
> operator=(typename M::value_type const & p) {
> d_coll.push_back(p.first);
> return *this;
> }
> };
>
> template<typename C, typename M>
> key_inserter<C,M> make_key_inserter(C & c, M & m) {
> return key_inserter<C,M>(c);
> }
>
> int main() {
> std::vector<int> v;
> std::map<int,int> m;
> m[0];m[1];m[2];m[6];
> std::copy(m.begin(),
> m.end(),
> make_key_inserter(v,m));
> std::copy(v.begin(),
> v.end(),
> std::ostream_iterator<int>(std::cout,"\n"));
> return 0;
> }
Given that the while loop solution only requires 2 lines of code, I
think it's the easier solution... ;)