#include <string>
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
map<int, string> Employees;
// 1) Assignment using array index notation
Employees[5234] = "Mike C.";
Employees[3374] = "Charlie M.";
Employees[1923] = "David D.";
Employees[7582] = "John A.";
Employees[5328] = "Peter Q.";
cout << Employees;
cout << "Employees[3374]=" << Employees[3374] << endl << endl;
cout << "Map size: " << Employees.size() << endl;
/*for( map<int,string>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
{
cout << (*ii).first << ": " << (*ii).second << endl;
}*/
system("pause");
}
Я хотел бы знать, что добавить, чтобы я мог печатать cout << Employees;
вместо использования итератора. Потому что я видел, что какой-то код может напрямую печатать содержимое карты с помощью простого cout << Anythg
. Интересно, что заставило код работать?
pretty_print
, которая брала бы карту, возвращала бы объектplease_pretty_print<std::map<T1, T2>>
со ссылкой наmap
и переопределяла бы<<( ostream&, please_pretty_print<std::map<T1, T2>>)
. Но я странный. 04.09.2013main
былаns::foo
и что существует типns::T
, для которого определен перегруженныйns::operator<<
. Обычный поиск найдетns::operator<<
, а ADL добавит в набор только::std
, где этого оператора нет. 04.09.2013operator<<
в пространство именns
решит проблему. Однако это не кажется хорошим решением, потому что вам придется переопределять оператор в каждом пространстве имен, которое может его использовать. Что можно было сделать по этому поводу? 04.09.2013