Connecting Tech Pros Worldwide Help | Site Map

How to use std::copy with std::map?

Siegfried Heintze
Guest
 
Posts: n/a
#1: May 3 '06
Should the following work? It does on some compilers. How can I get it to
work on g++ 3.2?
On g++ 3.2 it keeps telling me that there is no such function operator <<
for ostream and pair<string,string>. But there is!
And I can call it! And it works! So why cannot std::copy find it?

thanks,
Siegfried

template<typename K, typename V>
ostream& operator<<(ostream& os, std::pair<K,V>& p){ return os << p.first <<
p.second; }

std::map<string,string> m; m[(string)"hello"] = (string)"there";
std::copy(m.begin(), m.end(), ostream_iterator<std::pair<string,string>[color=blue]
>(cout, ",");[/color]


Victor Bazarov
Guest
 
Posts: n/a
#2: May 4 '06

re: How to use std::copy with std::map?


Siegfried Heintze wrote:[color=blue]
> Should the following work? It does on some compilers. How can I get
> it to work on g++ 3.2?[/color]

Compiler-specific questions should be asked in the newsgroup dedicated
to that compiler. Try gnu.g++.help.
[color=blue]
> On g++ 3.2 it keeps telling me that there is no such function
> operator << for ostream and pair<string,string>. But there is![/color]

Where?
[color=blue]
> And I can call it! And it works! So why cannot std::copy find it?
>
> thanks,
> Siegfried
>
> template<typename K, typename V>
> ostream& operator<<(ostream& os, std::pair<K,V>& p){ return os <<
> p.first << p.second; }[/color]

Is that what you wrote? Where does this definition appear? In
the global scope?
[color=blue]
> std::map<string,string> m; m[(string)"hello"] = (string)"there";
> std::copy(m.begin(), m.end(),
> ostream_iterator<std::pair<string,string>[color=green]
>> (cout, ",");[/color][/color]

Argument-dependent lookup (ADL) does not look in all the namespaces.
It limits its search to the types involved and the namespaces where
those types are defined. You need to place your operator in 'std'
namespace.

Next time please follow the recommendations of FAQ 5.8.

V
--
Please remove capital As from my address when replying by mail


Closed Thread