Pour afficher une ligne, je fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::copy(line1.begin(), line1.end(), std::ostream_iterator<char>(std::cout));
Pour afficher le conteneur , je dois faire ça sur toutes les lignes. Soit je fais un balayage sur le conteneur avec un const_iterator, ou bien je refais un std::copy. Mais dans ce cas là, suis-je obligé de passer par une fonction intermédiaire? Est-ce possible de faire ça sans passer explicitement par les itérateurs?

Ce qui donne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
 
using namespace std;
 
int main()
{
	typedef vector< vector<char> > VV;
	typedef vector< vector<char> >::const_iterator VVI;
	typedef vector<char> V;
 
	VV container;
	V line1;
	V line2;
	V line3;
 
	line1.push_back('a');
	line1.push_back('b');
	line1.push_back('c');
 
	line2.push_back('d');
	line2.push_back('e');
	line2.push_back('f');
 
	line3.push_back('g');
	line3.push_back('h');
	line3.push_back('i');
 
	container.push_back(line1);
	container.push_back(line2);
	container.push_back(line3);
 
	for (VVI itr = container.begin(); itr != container.end(); ++itr)
	{
		copy(itr->begin(), itr->end(), ostream_iterator<char>(cout));
		cout << endl;
	}
 
	return EXIT_SUCCESS;
}
Ou :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
std::copy(container.begin(), container.end(), func);
 
void func(std::vector<int> &line)
{
    std::copy(line.begin(), line.end(), std::ostream_iterator<char>(std::cout));
}