為了方便顯示map而自定義的兩個函數,出現了一個詭異的問題,感謝jinq????@163.com告之解決方法,但是我對問題的原因還是不太清楚.
#include <map>
#include <string>
#include <iterator>
#include <iostream>
using namespace std;
namespace std
{
//如果不將該函數放入名字空間std則使用ostream_iterator不能通過編譯
//但是可以直接用cout輸出pair
template<class _Elem,class _Traits,class K,class V>
basic_ostream<_Elem,_Traits>& operator<<(
basic_ostream<_Elem,_Traits>& s
,
const pair<K,V>& p
)
{
return s<<p.first<<" : "<<p.second;
}
}
template<class _Elem,class _Traits,class K,class V>
basic_ostream<_Elem,_Traits>& operator<<(
basic_ostream<_Elem,_Traits>& s
,
const map<K,V>& m
)
{
copy(m.begin(), m.end(), ostream_iterator<pair<K,V> >(s, "\n"));
return s;
}
int main()
{
using namespace std;
map<string,string> a;
a["key1"]="value1";
a["key2"]="value2";
cout<<a;
system("pause");
return 0;
}