[c++] map. wypisanie mapy

0
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
struct Connection {
string from;
string to;
int duration;
Connection(string from, string to, int duration)
: from(from), to(to), duration(duration)
{ }
};
ostream& operator<<(ostream& s, const Connection& c) {
return s << c.from << " -> " << c.to
<< ": " << c.duration << "s\n";
}

int main()
{
	map<string,vector<Connection> > m;
	ifstream infile("mapalistdata.txt",ios::in);
	string from, to;
	int duration,j=0;

	while (true) 
	{
		infile>>from>>to>>duration;
		Connection tmp(from,to,duration);
		m [tmp.from].push_back(tmp);
		j++;
		if (!infile) break;
		// i umieszczenie ich w mapie 'm'
	}
	infile.close();
	
	string chatterbox; // imie najwiekszego gaduly
	int longestTime = 0; // najdluzszy czas przegadany
	// przez jedna osobe
	for (map<string,vector<Connection> >::iterator i = m.begin(); i != m.end(); ++i) 
	{
		int tim = 0; 
		string key = i->first;
		for(int j=0;j<m[key].size() ;j++)
			tim +=  m[key][j].duration;
		if(longestTime< tim)
		{
			longestTime=tim;
			chatterbox=key;
		}
		cout << key << ": " << tim << " seconds" << endl;
	}
	// rozmowy najwiekszego gaduly
	vector<Connection>& vec = m[chatterbox];
	cout << chatterbox << " chattered for " << longestTime
	<< " seconds" << " in " << vec.size()
	<< " connections" << endl;
	for (vector<Connection>::iterator i = vec.begin();i != vec.end(); ++i)
	{
		
	}
	
	cin.sync();
	cin.get();
}

Witam, za zadanie miałem uzupełnić program do podanego schematu..
Program na początku ma wczytać dane do mapy, później je wypisać i sprawdzić po czym wypisac osobe która najwięcej gadała
i brakuje mi tego ostatniego..
Działą mi to gdy wpiszę

for(int i=0;i<m[chatterbox].size();i++)
		cout<<m[chatterbox][i];

ale muszę to wypisać w takiej pętli:

for (vector<Connection>::iterator i = vec.begin();i != vec.end(); ++i)
	{
		
	}

podstawowe pytanie.. czym jest i?:)

0

ok, wiem, że mógłbym to wypisać tak:

cout<<i->duration;
		cout<<i->from;
		cout<<i->to;

ale muszę skorzystać z przeładowania operatora <<
wie ktoś jak to uczynić?:)

0
for (vector<Connection>::iterator i = vec.begin();i != vec.end(); ++i)
	{
		cout<<*i;
	}
0

podstawowe pytanie.. czym jest i?:)
i jest vector<Connection>::iterator. zachowuje się jak wskaźnik (czyli *i jest bieżącym elementem, i++ przesuwa na następny element), i w praktyce może być (i często jest) zaimplementowany jako po prostu wskaźnik — standard jednak tego nie precyzuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1