Pour afficher une ligne, je fais :
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::copy(line1.begin(), line1.end(), std::ostream_iterator<char>(std::cout));
Ce qui donne:
Ou :
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; }
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)); }
Partager