source: presentations/trunk/QtOverview-2010-ESA/QtOverview-2010-ESA.html@ 317

Last change on this file since 317 was 317, checked in by garnier, 15 years ago

nouvelle pres pour ESA 2010

File size: 38.5 KB
RevLine 
[317]1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en-US">
3 <head profile="http://purl.org/net/uriprofile/">
4
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta http-equiv="Content-Language" content="ja" />
7 <meta http-equiv="Content-Style-Type" content="text/css" />
8 <meta http-equiv="Content-Script-Type" content="text/javascript" />
9 <title>Standard Template Library</title>
10
11 <meta name="author" content="Enseignement LAL" />
12 <meta name="description" content="Bonne pratiques" />
13 <meta name="keywords" content="Cours Outil Developpement logiciel" />
14 <link rev="made" href="mailto:ens@lal.in2p3.fr" />
15 <link rel="stylesheet" href="../../tags/Tools/v7/css/screen.css" type="text/css" media="screen, projection, tv, print" />
16 <link rel="stylesheet" href="../../tags/Tools/v7/Slidy/slidy-toc.css" type="text/css" media="screen, projection, print" />
17 <script src="../../tags/Tools/v7/Slidy/slidy.js" type="text/javascript"></script>
18 <script src="../../tags/Tools/v7/Slidy/slidy-toc.js" type="text/javascript"></script>
19 </head>
20
21 <body style="font-size: 18pt;">
22
23
24 <!-- Introduction [Start] -->
25 <div style=" display: block; visibility: visible; position: absolute;" class="slide" id="cover">
26
27 <div class="callout">
28 <p id="title">
29 <br />
30 Geant4 Visualization : Qt Driver
31 </p>
32 </div>
33 <p>&nbsp;</p>
34 <p id="subtitle">Developments for Geant4.9.4</p>
35 <p>&nbsp;</p>
36 <p>&nbsp;</p>
37 <p id="event">Geant4 Workshop</p>
38 <p id="author">Laurent Garnier</p>
39 </div>
40
41 <!-- Diapo [Plan] -->
42 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
43 <div class="callout">
44 <ul class="non-incremental">
45 <li>Viewer and UI integration</li>
46 <li>Rotations</li>
47 <li>Meta Keys</li>
48 <li>Speed improvments in OpenGL drivers</li>
49 <li>Make posters</li>
50 <li>Developpement on all platforms</li>
51 <li>Qt configuration problems</li>
52 <li>Make an Geant4 application on mac</li>
53 </ul>
54 </div>
55 </div>
56
57 <!-- Diapo [Plan] -->
58 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
59 <div class="callout">
60 <ul class="non-incremental">
61 <li><font color="red">Viewer and UI integration</font></li>
62 <li>Rotations</li>
63 <li>Meta Keys</li>
64 <li>Speed improvments in OpenGL drivers</li>
65 <li>Make posters</li>
66 <li>Developpement on all platforms</li>
67 <li>Qt configuration problems</li>
68 <li>Make an Geant4 application on mac</li>
69 </ul>
70 </div>
71 </div>
72
73 <!-- Diapo -->
74 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
75
76 <h1>Viewer and UI integration</h1>
77 <p></p>
78 <ul class="incremental">
79 <li></li>
80 <li></li>
81 <li></li>
82 </ul>
83 </div>
84
85 <!-- Diapo -->
86 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
87
88 <h1>Viewer and UI integration</h1>
89 <p></p>
90 <ul class="incremental">
91 <li></li>
92 <li></li>
93 <li></li>
94 </ul>
95 </div>
96
97 <!-- Diapo [Plan] -->
98 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
99 <div class="callout">
100 <ul class="non-incremental">
101 <li>Viewer and UI integration</li>
102 <li><font color="red">Rotations</font></li>
103 <li>Meta Keys</li>
104 <li>Speed improvments in OpenGL drivers</li>
105 <li>Make posters</li>
106 <li>Developpement on all platforms</li>
107 <li>Qt configuration problems</li>
108 <li>Make an Geant4 application on mac</li>
109 </ul>
110 </div>
111 </div>
112
113
114 <!-- Diapo -->
115 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
116
117 <h1>Rotations</h1>
118 <p></p>
119 <ul class="incremental">
120 <li></li>
121 <li></li>
122 <li></li>
123 </ul>
124 </div>
125
126 <!-- Diapo -->
127 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
128
129 <h1>Rotations</h1>
130 <p></p>
131 <ul class="incremental">
132 <li></li>
133 <li></li>
134 <li></li>
135 </ul>
136 </div>
137
138 <!-- Diapo [Plan] -->
139 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
140 <div class="callout">
141 <ul class="non-incremental">
142 <li>Viewer and UI integration</li>
143 <li>Rotations</li>
144 <li><font color="red">Meta Keys</font></li>
145 <li>Speed improvments in OpenGL drivers</li>
146 <li>Make posters</li>
147 <li>Developpement on all platforms</li>
148 <li>Qt configuration problems</li>
149 <li>Make an Geant4 application on mac</li>
150 </ul>
151 </div>
152 </div>
153
154
155 <!-- Diapo -->
156 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
157
158 <h1>Meta Keys</h1>
159 <p></p>
160 <ul class="incremental">
161 <li></li>
162 <li></li>
163 <li></li>
164 </ul>
165 </div>
166
167 <!-- Diapo -->
168 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
169
170 <h1>Meta Keys</h1>
171 <p></p>
172 <ul class="incremental">
173 <li></li>
174 <li></li>
175 <li></li>
176 </ul>
177 </div>
178
179 <!-- Diapo [Plan] -->
180 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
181 <div class="callout">
182 <ul class="non-incremental">
183 <li>Viewer and UI integration</li>
184 <li>Rotations</li>
185 <li>Meta Keys</li>
186 <li><font color="red">Speed improvments in OpenGL drivers</font></li>
187 <li>Make posters</li>
188 <li>Developpement on all platforms</li>
189 <li>Qt configuration problems</li>
190 <li>Make an Geant4 application on mac</li>
191 </ul>
192 </div>
193 </div>
194
195
196 <!-- Diapo -->
197 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
198
199 <h1>Speed improvments in OpenGL drivers</h1>
200 <p>Loose time when moving a component is in visualization part. Thank to Shark (mac OSX), I identify two bootle neck : <font color="green"><i>glBegin</i></font> (47% of OGL time) and <font color="green"><i>glFlush</i></font> (44%). After some code optimisations :
201
202 <p><b>Mac OSX 10.5 : Immediate Mode</b></p>
203 <table border="1" width="100%">
204 <tr>
205 <td width="25%">&nbsp;</td>
206 <td width="30%">First draw time (sec)</td>
207 <td width="20%">Mem (Mo)</td>
208 <td width="25%">Rotation (fps)</td>
209 </tr>
210 <tr>
211 <td width="25%">Geant 4.9.3</td>
212 <td width="30%">5</td>
213 <td width="20%">45</td>
214 <td width="25%">0,46</td>
215 </tr>
216 <tr>
217 <td width="25%">Geant 4.9.4</td>
218 <td width="30%">6</td>
219 <td width="20%">48</td>
220 <td width="25%">0,53</td>
221 </tr>
222 </table>
223 <p><b>Mac OSX 10.6 : Immediate Mode</b></p>
224 <table border="1" width="100%">
225 <tr>
226 <td colspan="4"></td>
227 </tr>
228 <tr>
229 <td width="25%">Geant 4.9.3</td>
230 <td width="30%">5</td>
231 <td width="20%">40</td>
232 <td width="25%">0,6</td>
233 </tr>
234 <tr>
235 <td width="25%">Geant 4.9.4</td>
236 <td width="30%">6</td>
237 <td width="20%">40(<b><font color="red">=</font></b>)</td>
238 <td width="25%">0,6</td>
239 </tr>
240 </table>
241 <p><b>Mac OSX 10.5 : Stored Mode</b></p>
242 <table border="1" width="100%">
243 <tr>
244 <td width="25%">Geant 4.9.3</td>
245 <td width="30%">94</td>
246 <td width="20%">270</td>
247 <td width="25%">1,2</td>
248 </tr>
249 <tr>
250 <td width="25%">Geant 4.9.4</td>
251 <td width="30%">72 (<b><font color="red">x1,3</font></b>)</td>
252 <td width="20%">270 (<b><font color="red">=</font></b>)</td>
253 <td width="25%">2,66 (<b><font color="red">x2,2</font></b>)</td>
254 </tr>
255 </table>
256 <p><b>Mac OSX 10.6 : Stored Mode</b></p>
257 <table border="1" width="100%">
258 <tr>
259 <td width="25%">Geant 4.9.3</td>
260 <td width="30%">13</td>
261 <td width="20%">227</td>
262 <td width="25%">3,73</td>
263 </tr>
264 <tr>
265 <td width="25%">Geant 4.9.4</td>
266 <td width="30%">11 (<b><font color="red">x1,2</font></b>)</td>
267 <td width="20%">210 (<b><font color="red">-5%</font></b>)</td>
268 <td width="25%">5,3 (<b><font color="red">x1,43</font></b>)</td>
269 </tr>
270 </table>
271 </div>
272
273 <!-- Diapo -->
274 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
275
276 <h1>Speed improvments in OpenGL drivers</h1>
277 <p></p>
278 <ul class="incremental">
279 <li></li>
280 <li></li>
281 <li></li>
282 </ul>
283 </div>
284
285 <!-- Diapo [Plan] -->
286 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
287 <div class="callout">
288 <ul class="non-incremental">
289 <li>Viewer and UI integration</li>
290 <li>Rotations</li>
291 <li>Meta Keys</li>
292 <li>Speed improvments in OpenGL drivers</li>
293 <li><font color="red">Make posters</font></li>
294 <li>Developpement on all platforms</li>
295 <li>Qt configuration problems</li>
296 <li>Make an Geant4 application on mac</li>
297 </ul>
298 </div>
299 </div>
300
301
302 <!-- Diapo -->
303 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
304
305 <h1>Make posters</h1>
306 <p></p>
307 <ul class="incremental">
308 <li></li>
309 <li></li>
310 <li></li>
311 </ul>
312 </div>
313
314 <!-- Diapo -->
315 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
316
317 <h1>Make posters</h1>
318 <p></p>
319 <ul class="incremental">
320 <li></li>
321 <li></li>
322 <li></li>
323 </ul>
324 </div>
325
326 <!-- Diapo [Plan] -->
327 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
328 <div class="callout">
329 <ul class="non-incremental">
330 <li>Viewer and UI integration</li>
331 <li>Rotations</li>
332 <li>Meta Keys</li>
333 <li>Speed improvments in OpenGL drivers</li>
334 <li>Make posters</li>
335 <li><font color="red">Developpement on all platforms</font></li>
336 <li>Qt configuration problems</li>
337 <li>Make an Geant4 application on mac</li>
338 </ul>
339 </div>
340 </div>
341
342
343 <!-- Diapo -->
344 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
345
346 <h1>Developpement on all platforms</h1>
347 <p></p>
348 <ul class="incremental">
349 <li></li>
350 <li></li>
351 <li></li>
352 </ul>
353 </div>
354
355 <!-- Diapo -->
356 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
357
358 <h1>Developpement on all platforms</h1>
359 <p></p>
360 <ul class="incremental">
361 <li></li>
362 <li></li>
363 <li></li>
364 </ul>
365 </div>
366
367 <!-- Diapo [Plan] -->
368 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
369 <div class="callout">
370 <ul class="non-incremental">
371 <li>Viewer and UI integration</li>
372 <li>Rotations</li>
373 <li>Meta Keys</li>
374 <li>Speed improvments in OpenGL drivers</li>
375 <li>Make posters</li>
376 <li>Developpement on all platforms</li>
377 <li><font color="red">Qt configuration problems</font></li>
378 <li>Make an Geant4 application on mac</li>
379 </ul>
380 </div>
381 </div>
382
383
384 <!-- Diapo -->
385 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
386
387 <h1>Qt configuration problems</h1>
388<!--
389Pb de OpenGl : 10.5 /usr/X11/lib/libGLU.1.dylib (compatibility version 1.3.0, current version 1.3.0)
390 /usr/X11/lib/libGL.1.dylib (compatibility version 1.2.0, current version 1.2.0)
391et 10.6 : /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
392 /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
393
394
395-->
396 <p></p>
397 <ul class="incremental">
398 <li></li>
399 <li></li>
400 <li></li>
401 </ul>
402 </div>
403
404 <!-- Diapo -->
405 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
406
407 <h1>Qt configuration problems</h1>
408 <p></p>
409 <ul class="incremental">
410 <li></li>
411 <li></li>
412 <li></li>
413 </ul>
414 </div>
415
416 <!-- Diapo [Plan] -->
417 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
418 <div class="callout">
419 <ul class="non-incremental">
420 <li>Viewer and UI integration</li>
421 <li>Rotations</li>
422 <li>Meta Keys</li>
423 <li>Speed improvments in OpenGL drivers</li>
424 <li>Make posters</li>
425 <li>Developpement on all platforms</li>
426 <li>Qt configuration problems</li>
427 <li><font color="red">Make an Geant4 application on mac</font></li>
428 </ul>
429 </div>
430 </div>
431
432
433 <!-- Diapo -->
434 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
435
436 <h1>Make an Geant4 application on mac</h1>
437 <p></p>
438 <ul class="incremental">
439 <li></li>
440 <li></li>
441 <li></li>
442 </ul>
443 </div>
444
445 <!-- Diapo -->
446 <div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
447
448 <h1>Make an Geant4 application on mac</h1>
449 <p></p>
450 <ul class="incremental">
451 <li></li>
452 <li></li>
453 <li></li>
454 </ul>
455 </div>
456
457
458
459<!--
460 - All windows in the same UI :
461 - Viever integrate in UI
462 - Adds Tabs with lot of views
463 - Help, Cout, History have more visibility
464 + Demo
465
466- Rotations :
467 - "Historical rotation" in Phi/Theta (default)
468 - "Google earth" like rotation
469 + Demo
470
471- Meta Keys
472 - Add some meta keys for all kinds of rotation, move, graphical actions...
473 + Demo
474
475- Speed in OpenGL
476 + I can have some stats in a table
477
478- Make posters thanks to printEPS
479 - gl2ps alowed us to created big files (8096x8096)
480
481- Developments on all platforms
482 - SLC4 (I'm still configuring it)
483 - SLC5 (works fine)
484 - Mac 10.6 with Qt4.7 (last Qt version of 15th september)
485 - Windows Xp (I'm rebuilding it, it was working last time)
486 - Stop support for qt3 (slc4 ?)
487 - Qt out of Beta status
488 + Demo available on Virtual machines on all thoses configurations
489
490- Qt configuration problems
491
492- MakeApp (optional and I have to try if it still works with Qt4.7 )
493 - I have a script on mac OSX to make a .app from a .exe example file.
494 You can share this .app file to everybody. gui.mac and vis.mac files
495 are incorporated into the .app
496-->
497
498
499
500<!-- Diapo [Organisation] -->
501<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
502
503 <h1>Organisation</h1>
504 <p>La librarie STL est organis&eacute;e en plusieurs parties. Il existe principalement 3 types d'&eacute;l&eacute;ments</p>
505 <div class="incremental">
506 <ul>
507 <li>
508 <strong>Les conteneurs</strong><br/>
509 Permettent de contenir des donn&eacute;es
510 </li>
511 <li>
512 <strong>Les it&eacute;rateurs</strong><br />
513 Permettent aux algorithmes de manipuler les conteneurs :
514 r&eacute;cup&eacute;rer une donn&eacute;e et passer &agrave; la suivante
515 </li>
516 <li>
517 <strong>Les algorithmes</strong><br />
518 Permettent de manipuler les donn&eacute;es d'un conteneur en acc&eacute;dant aux donn&eacute;es
519 via les it&eacute;rateurs
520 </li>
521 </ul>
522 <div>
523 <p>On ajoute</p>
524 <ul>
525 <li>
526 <strong>Les strings</strong><br/>
527 Qui d&eacute;finissent les chaines de caract&egrave;res comme type <i>normal</i> (copie, assignation, comparaison,...)
528 </li>
529 </ul>
530 </div>
531 </div>
532</div>
533
534
535<!-- Diapo [Conteneurs (1)] -->
536<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
537
538 <h1>Conteneurs</h1>
539 <ul class="incremental">
540 <li class="non-incremental">
541 Il s'agit de structures <strong>algorithmiques</strong> permettant :
542 <ul>
543 <li>d'organiser un ensemble de donn&eacute;es <strong>de m&ecirc;me type</strong> en s&eacute;quence,</li>
544 <li>puis de <strong>parcourir</strong> ces donn&eacute;es</li>
545 </ul>
546 </li>
547 <li>Exemples :
548 <ul>
549 <li>les listes (<strong>std::list</strong>)</li>
550 <li>les tableaux (<strong>std::vector</strong>)</li>
551 <li>les listes tri&eacute;es (<strong>std::set</strong>)</li>
552 <li>les listes d'associations (<strong>std::map</strong>)</li>
553 </ul>
554 </li>
555 <li>La d&eacute;finition d'un conteneur est ind&eacute;pendante du type des objets contenus</li>
556 <li>On sp&eacute;cifie ce qu'il <em>contient</em> lors de la d&eacute;claration de la variable</li>
557 <li>Allocation dynamique et automatique de la m&eacute;moire</li>
558 </ul>
559</div>
560
561<!-- Diapo [Conteneurs (2)] -->
562<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
563
564 <h1>Conteneurs ...</h1>
565
566 <div class="incremental">
567 <div>
568 <strong>Ordonn&eacute;s</strong> (position ind&eacute;pendante de la valeur)
569 <div style="padding-left: 5%; padding-top: 1%">
570 <table class="noborder">
571 <tbody>
572 <tr>
573 <td>
574 <em>List</em> :<br />liste doublement cha&icirc;n&eacute;e
575 </td>
576 <td style="text-align: center;">
577 <br />
578 <img src="./STL_images/list.png" alt="Image d'une list" width="50%"/>
579 </td>
580 </tr>
581 <tr>
582 <td>
583 <em>Vector</em> :<br />tableau &agrave; 1 dimension
584 </td>
585 <td style="text-align: center;">
586 <br />
587 <img src="./STL_images/vector.png" alt="Image d'un vecteur" width="50%"/>
588 </td>
589 </tr>
590 </tbody>
591 </table>
592 </div>
593 </div>
594 <div style="padding-top: 5%;">
595 <strong>Tri&eacute;s</strong> (position d&eacute;pendante de la valeur)
596 <div style="padding-left: 5%; padding-top: 1%">
597 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
598 <tbody>
599 <tr>
600 <td>
601 <em>Set/Multiset</em> :<br />ensemble
602 </td>
603 <td style="text-align: center;">
604 <img src="./STL_images/set.png" alt="Image d'un set/multiset" width="30%"/>
605 </td>
606 </tr>
607 <tr>
608 <td>
609 <em>Map/Multimap</em> :<br />tableau associatif
610 </td>
611 <td style="text-align: center;">
612 <img src="./STL_images/map.png" alt="Image d'un map/multimap" width="30%"/>
613 </td>
614 </tr>
615 </tbody>
616 </table>
617 </div>
618 </div>
619 </div>
620</div>
621
622
623<!-- Diapo [List] -->
624<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
625
626 <h1>List</h1>
627
628 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
629 <tbody>
630 <tr>
631 <td style="width: 30%; valign: top">
632 Utilisation des listes
633 </td>
634 <td>
635 <pre>
636 #include &lt;iostream&gt;
637 <font color="red"><strong>#include &lt;list&gt;</strong></font>
638
639 int main()
640 {
641 std::list&lt;int&gt; l;
642
643 l.push_front(3);
644 l.push_front(2);
645 l.push_back(4);
646
647 l.pop_front();
648 l.pop_back();
649
650 std::cout &lt;&lt; l.front() &lt;&lt; std::endl;
651 std::cout &lt;&lt; l.back() &lt;&lt; std::endl;
652
653 return 0;
654 }
655 </pre>
656 </td>
657 </tr>
658 </tbody>
659 </table>
660
661</div>
662
663<!-- Diapo [List] -->
664<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
665
666 <h1>List</h1>
667
668 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
669 <tbody>
670 <tr>
671 <td style="width: 30%; valign: top">
672 Comme pour tous les composants <em>STL</em>,
673 il faut toujours se placer dans l'<span style="color: red">espace de nommage std::</span>
674 </td>
675 <td>
676 <pre>
677 #include &lt;iostream&gt;
678 #include &lt;list&gt;
679
680 int main()
681 {
682 <font color="red"><strong>std::</strong></font>list&lt;int&gt; l;
683
684 l.push_front(3);
685 l.push_front(2);
686 l.push_back(4);
687
688 l.pop_front();
689 l.pop_back();
690
691 std::cout &lt;&lt; l.front() &lt;&lt; std::endl;
692 std::cout &lt;&lt; l.back() &lt;&lt; std::endl;
693
694 return 0;
695 }
696 </pre>
697 </td>
698 </tr>
699 </tbody>
700 </table>
701
702</div>
703
704<!-- Diapo [List] -->
705<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
706
707 <h1>List</h1>
708
709 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
710 <tbody>
711 <tr>
712 <td style="width: 30%; valign: top">
713 <span style="color: red">Ins&egrave;re un &eacute;l&eacute;ment</span> dans la liste
714 </td>
715 <td>
716 <pre>
717 #include &lt;iostream&gt;
718 #include &lt;list&gt;
719
720 int main()
721 {
722 std::list&lt;int&gt; l;
723
724 <font color="red"><strong>l.push_front(3);</strong></font>
725 <font color="red"><strong>l.push_front(2);</strong></font>
726 <font color="red"><strong>l.push_back(4);</strong></font>
727
728 l.pop_front();
729 l.pop_back();
730
731 std::cout &lt;&lt; l.front() &lt;&lt; std::endl;
732 std::cout &lt;&lt; l.back() &lt;&lt; std::endl;
733
734 return 0;
735 }
736 </pre>
737 </td>
738 </tr>
739 </tbody>
740 </table>
741
742</div>
743
744<!-- Diapo [List] -->
745<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
746
747 <h1>List</h1>
748
749 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
750 <tbody>
751 <tr>
752 <td style="width: 30%; valign: top">
753 <span style="color: red">Retire un &eacute;l&eacute;ment</span> de la liste
754 </td>
755 <td>
756 <pre>
757 #include &lt;iostream&gt;
758 #include &lt;list&gt;
759
760 int main()
761 {
762 std::list&lt;int&gt; l;
763
764 l.push_front(3);
765 l.push_front(2);
766 l.push_back(4);
767
768 <font color="red"><strong>l.pop_front();</strong></font>
769 <font color="red"><strong>l.pop_back();</strong></font>
770
771 std::cout &lt;&lt; l.front() &lt;&lt; std::endl;
772 std::cout &lt;&lt; l.back() &lt;&lt; std::endl;
773
774 return 0;
775 }
776 </pre>
777 </td>
778 </tr>
779 </tbody>
780 </table>
781
782</div>
783
784<!-- Diapo [List] -->
785<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
786
787 <h1>List</h1>
788
789 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
790 <tbody>
791 <tr>
792 <td style="width: 30%; valign: top">
793 <span style="color: red">Acc&egrave;de &agrave; un &eacute;l&eacute;ment</span> de la liste
794 </td>
795 <td>
796 <pre>
797 #include &lt;iostream&gt;
798 #include &lt;list&gt;
799
800 int main()
801 {
802 std::list&lt;int&gt; l;
803
804 l.push_front(3);
805 l.push_front(2);
806 l.push_back(4);
807
808 l.pop_front();
809 l.pop_back();
810
811 std::cout &lt;&lt; <font color="red"><strong>l.front()</strong></font> &lt;&lt; std::endl;
812 std::cout &lt;&lt; <font color="red"><strong>l.back()</strong></font> &lt;&lt; std::endl;
813
814 return 0;
815 }
816 </pre>
817 </td>
818 </tr>
819 </tbody>
820 </table>
821
822</div>
823
824
825
826<!-- Diapo [Vector] -->
827<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
828
829 <h1>Vector</h1>
830
831 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
832 <tbody>
833 <tr>
834 <td style="width: 30%; valign: top">
835 Utilisation des vecteurs
836 </td>
837 <td>
838 <pre>
839 #include &lt;iostream&gt;
840<font color="red"><strong> #include &lt;vector&gt;</strong></font>
841
842 int main()
843 {
844 std::vector&lt;int&gt; v;
845
846 v.push_back(3);
847 v.push_back(4);
848
849 std::cout &lt;&lt; v[0] &lt;&lt; std::endl;
850
851 v.at( 1 ) = 5;
852 std::cout &lt;&lt; v.back() &lt;&lt; std::endl;
853
854 v.clear();
855 return 0;
856 }
857 </pre>
858 </td>
859 </tr>
860 </tbody>
861 </table>
862
863</div>
864
865<!-- Diapo [Vector] -->
866<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
867
868 <h1>Vector</h1>
869
870 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
871 <tbody>
872 <tr>
873 <td style="width: 30%; valign: top">
874 <span style="color: red">Ins&egrave;re un &eacute;l&eacute;ment</span> dans le vecteur
875 </td>
876 <td>
877 <pre>
878 #include &lt;iostream&gt;
879 #include &lt;vector&gt;
880
881 int main()
882 {
883 std::vector&lt;int&gt; v;
884
885 <font color="red"><strong>v.push_back(3);</strong></font>
886 <font color="red"><strong>v.push_back(4);</strong></font>
887
888 std::cout &lt;&lt; v[0] &lt;&lt; std::endl;
889
890 v.at( 1 ) = 5;
891 std::cout &lt;&lt; v.back() &lt;&lt; std::endl;
892
893 v.clear();
894 return 0;
895 }
896 </pre>
897 </td>
898 </tr>
899 </tbody>
900 </table>
901
902</div>
903
904<!-- Diapo [Vector] -->
905<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
906
907 <h1>Vector</h1>
908
909 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
910 <tbody>
911 <tr>
912 <td style="width: 30%; valign: top">
913 <span style="color: red">Acc&egrave;de</span> au 1er &eacute;l&eacute;ment
914 </td>
915 <td>
916 <pre>
917 #include &lt;iostream&gt;
918 #include &lt;vector&gt;
919
920 int main()
921 {
922 std::vector&lt;int&gt; v;
923
924 v.push_back(3);
925 v.push_back(4);
926
927 std::cout &lt;&lt; <font color="red"><strong>v[0]</strong></font> &lt;&lt; std::endl;
928
929 v.at( 1 ) = 5;
930 std::cout &lt;&lt; v.back() &lt;&lt; std::endl;
931
932 v.clear();
933 return 0;
934 }
935 </pre>
936 </td>
937 </tr>
938 </tbody>
939 </table>
940
941</div>
942
943<!-- Diapo [Vector] -->
944<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
945
946 <h1>Vector</h1>
947
948 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
949 <tbody>
950 <tr>
951 <td style="width: 30%; valign: top">
952 <span style="color: red">Modifie</span> le 2&egrave; &eacute;l&eacute;ment
953 </td>
954 <td>
955 <pre>
956 #include &lt;iostream&gt;
957 #include &lt;vector&gt;
958
959 int main()
960 {
961 std::vector&lt;int&gt; v;
962
963 v.push_back(3);
964 v.push_back(4);
965
966 std::cout &lt;&lt; v[0] &lt;&lt; std::endl;
967
968 <font color="red"><strong>v.at( 1 ) = 5;</strong></font>
969 std::cout &lt;&lt; v.back() &lt;&lt; std::endl;
970
971 v.clear();
972 return 0;
973 }
974 </pre>
975 </td>
976 </tr>
977 </tbody>
978 </table>
979
980</div>
981
982<!-- Diapo [Vector] -->
983<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
984
985 <h1>Vector</h1>
986
987 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
988 <tbody>
989 <tr>
990 <td style="width: 30%; valign: top">
991 <span style="color: red">Acc&egrave;de au dernier &eacute;l&eacute;ment</span> du vecteur
992 </td>
993 <td>
994 <pre>
995 #include &lt;iostream&gt;
996 #include &lt;vector&gt;
997
998 int main()
999 {
1000 std::vector&lt;int&gt; v;
1001
1002 v.push_back(3);
1003 v.push_back(4);
1004
1005 std::cout &lt;&lt; v[0] &lt;&lt; std::endl;
1006
1007 v.at( 1 ) = 5;
1008 std::cout &lt;&lt; <font color="red"><strong>v.back()</strong></font> &lt;&lt; std::endl;
1009
1010 v.clear();
1011 return 0;
1012 }
1013 </pre>
1014 </td>
1015 </tr>
1016 </tbody>
1017 </table>
1018
1019</div>
1020
1021<!-- Diapo [Vector] -->
1022<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1023
1024 <h1>Vector</h1>
1025
1026 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1027 <tbody>
1028 <tr>
1029 <td style="width: 30%; valign: top">
1030 <span style="color: red">Supprime tous les &eacute;l&eacute;ments</span>
1031 </td>
1032 <td>
1033 <pre>
1034 #include &lt;iostream&gt;
1035 #include &lt;vector&gt;
1036
1037 int main()
1038 {
1039 std::vector&lt;int&gt; v;
1040
1041 v.push_back(3);
1042 v.push_back(4);
1043
1044 std::cout &lt;&lt; v[0] &lt;&lt; std::endl;
1045
1046 v.at( 1 ) = 5;
1047 std::cout &lt;&lt; v.back() &lt;&lt; std::endl;
1048
1049 <font color="red"><strong>v.clear();</strong></font>
1050 return 0;
1051 }
1052 </pre>
1053 </td>
1054 </tr>
1055 </tbody>
1056 </table>
1057
1058</div>
1059
1060
1061<!-- Diapo [Méthodes communes] -->
1062<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1063
1064 <h1>Quelques m&eacute;thodes communes</h1>
1065
1066 <ul class="incremental">
1067 <li class="non-incremental">
1068 Vider le conteneur :
1069 <ul>
1070 <li>
1071 <strong>void clear();</strong>
1072 <br />
1073 appelle le destructeur pour chaque objet dans le conteneur
1074 <br />
1075 d&eacute;salloue la m&eacute;moire utilis&eacute;e
1076 </li>
1077 </ul>
1078 <br /><br />
1079 </li>
1080 <li>
1081 Retourner le nombre d'&eacute;l&eacute;ments :
1082 <ul><li><strong>int size();</strong></li></ul>
1083 <br /><br />
1084 </li>
1085 <li>
1086 Tester si le conteneur est vide :
1087 <ul><li><strong>bool empty();</strong></li></ul>
1088 </li>
1089 </ul>
1090
1091</div>
1092
1093
1094<!-- Diapo [Itérateurs] -->
1095<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1096
1097 <h1>It&eacute;rateurs</h1>
1098
1099 <div class="incremental">
1100 <ul class="non-incremental">
1101 <li>
1102 C'est une g&eacute;n&eacute;ralisation de la notion de <em>pointeur</em>.
1103 </li>
1104 <li>
1105 Il permet de parcourir en s&eacute;quence les &eacute;l&eacute;ments d'un conteneur
1106 sans avoir &agrave; se pr&eacute;occuper du type du conteneur.
1107 </li>
1108 </ul>
1109
1110 <div style="padding-top: 5px; padding-left: 30%">
1111 <pre style="width: 75%">
1112 #include &lt;vector&gt;
1113 {
1114 std::vector&lt;int&gt; v;
1115 //
1116 <font color="red"><strong>std::vector&lt;int&gt;::iterator</strong></font> it1 = v.begin();
1117 <font color="red"><strong>std::vector&lt;int&gt;::iterator</strong></font> it2 = v.end();
1118 }
1119 </pre>
1120 </div>
1121 <div style="text-align: center;">
1122 <img src="./STL_images/iterator.png" alt="Repr&eacute;sentation graphique d'un it&eacute;rateur" width="30%"/>
1123 </div>
1124
1125 </div>
1126
1127</div>
1128
1129<!-- Diapo [Itérateurs] -->
1130<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1131
1132 <h1>It&eacute;rateurs</h1>
1133
1134 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1135 <tbody>
1136 <tr>
1137 <td style="width: 30%; valign: top">
1138 &nbsp;
1139 </td>
1140 <td>
1141 <pre>
1142 #include &lt;iostream>
1143 #include &lt;list>
1144
1145 int main()
1146 {
1147 std::list&lt;int> liste;
1148
1149 for (unsigned int i = 0; i &lt; 10; i++) {
1150 liste.push_back(i);
1151 }
1152
1153 std::list&lt;int>::iterator it;
1154 for (it = liste.begin(); it != liste.end(); ++it) {
1155 int i = *it;
1156 std::cout &lt;&lt; "i = " &lt;&lt; i &lt;&lt; std::endl;
1157 }
1158 return (0);
1159 }
1160 </pre>
1161 </td>
1162 </tr>
1163 </tbody>
1164 </table>
1165
1166</div>
1167
1168<!-- Diapo [Itérateurs] -->
1169<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1170
1171 <h1>It&eacute;rateurs</h1>
1172
1173 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1174 <tbody>
1175 <tr>
1176 <td style="width: 30%; valign: top">
1177 <span style="color: red">D&eacute;claration</span>
1178 </td>
1179 <td>
1180 <pre>
1181 #include &lt;iostream>
1182 #include &lt;list>
1183
1184 int main()
1185 {
1186 std::list&lt;int> liste;
1187
1188 for (unsigned int i = 0; i &lt; 10; i++) {
1189 liste.push_back(i);
1190 }
1191
1192 <font color="red"><strong>std::list&lt;int>::iterator it;</strong></font>
1193 for (it = liste.begin(); it != liste.end(); ++it) {
1194 int i = *it;
1195 std::cout &lt;&lt; "i = " &lt;&lt; i &lt;&lt; std::endl;
1196 }
1197 return (0);
1198 }
1199 </pre>
1200 </td>
1201 </tr>
1202 </tbody>
1203 </table>
1204
1205</div>
1206
1207<!-- Diapo [Itérateurs] -->
1208<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1209
1210 <h1>It&eacute;rateurs</h1>
1211
1212 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1213 <tbody>
1214 <tr>
1215 <td style="width: 30%; valign: top">
1216 <span style="color: red">1er &eacute;l&eacute;ment</span>
1217 </td>
1218 <td>
1219 <pre>
1220 #include &lt;iostream>
1221 #include &lt;list>
1222
1223 int main()
1224 {
1225 std::list&lt;int> liste;
1226
1227 for (unsigned int i = 0; i &lt; 10; i++) {
1228 liste.push_back(i);
1229 }
1230
1231 std::list&lt;int>::iterator it;
1232 for (it = <font color="red"><strong>liste.begin()</strong></font>; it != liste.end(); ++it) {
1233 int i = *it;
1234 std::cout &lt;&lt; "i = " &lt;&lt; i &lt;&lt; std::endl;
1235 }
1236 return (0);
1237 }
1238 </pre>
1239 </td>
1240 </tr>
1241 </tbody>
1242 </table>
1243
1244</div>
1245
1246<!-- Diapo [Itérateurs] -->
1247<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1248
1249 <h1>It&eacute;rateurs</h1>
1250
1251 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1252 <tbody>
1253 <tr>
1254 <td style="width: 30%; valign: top">
1255 <span style="color: red">Pointe apr&egrave;s le dernier &eacute;l&eacute;ment</span>
1256 </td>
1257 <td>
1258 <pre>
1259 #include &lt;iostream>
1260 #include &lt;list>
1261
1262 int main()
1263 {
1264 std::list&lt;int> liste;
1265
1266 for (unsigned int i = 0; i &lt; 10; i++) {
1267 liste.push_back(i);
1268 }
1269
1270 std::list&lt;int>::iterator it;
1271 for (it = liste.begin(); it != <font color="red"><strong>liste.end()</strong></font>; ++it) {
1272 int i = *it;
1273 std::cout &lt;&lt; "i = " &lt;&lt; i &lt;&lt; std::endl;
1274 }
1275 return (0);
1276 }
1277 </pre>
1278 </td>
1279 </tr>
1280 </tbody>
1281 </table>
1282
1283</div>
1284
1285<!-- Diapo [Itérateurs] -->
1286<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1287
1288 <h1>It&eacute;rateurs</h1>
1289
1290 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1291 <tbody>
1292 <tr>
1293 <td style="width: 30%; valign: top">
1294 On <span style="color: red">incr&eacute;mente</span> l'it&eacute;rateur
1295 </td>
1296 <td>
1297 <pre>
1298 #include &lt;iostream>
1299 #include &lt;list>
1300
1301 int main()
1302 {
1303 std::list&lt;int> liste;
1304
1305 for (unsigned int i = 0; i &lt; 10; i++) {
1306 liste.push_back(i);
1307 }
1308
1309 std::list&lt;int>::iterator it;
1310 for (it = liste.begin(); it != liste.end(); <font color="red"><strong>++it</strong></font>) {
1311 int i = *it;
1312 std::cout &lt;&lt; "i = " &lt;&lt; i &lt;&lt; std::endl;
1313 }
1314 return (0);
1315 }
1316 </pre>
1317 </td>
1318 </tr>
1319 </tbody>
1320 </table>
1321
1322</div>
1323
1324<!-- Diapo [Itérateurs] -->
1325<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1326
1327 <h1>It&eacute;rateurs</h1>
1328
1329 <table class="noborder" style="padding-left: 15%; padding-top: 10%">
1330 <tbody>
1331 <tr>
1332 <td style="width: 30%; valign: top">
1333 On acc&egrave;de &agrave; l'&eacute;l&eacute;ment par <span style="color: red">d&eacute;r&eacute;f&eacute;rencement</span>
1334 </td>
1335 <td>
1336 <pre>
1337 #include &lt;iostream>
1338 #include &lt;list>
1339
1340 int main()
1341 {
1342 std::list&lt;int> liste;
1343
1344 for (unsigned int i = 0; i &lt; 10; i++) {
1345 liste.push_back(i);
1346 }
1347
1348 std::list&lt;int>::iterator it;
1349 for (it = liste.begin(); it != liste.end(); ++it) {
1350 int <font color="red"><strong>i = *it</strong></font>;
1351 std::cout &lt;&lt; "i = " &lt;&lt; i &lt;&lt; std::endl;
1352 }
1353 return (0);
1354 }
1355 </pre>
1356 </td>
1357 </tr>
1358 </tbody>
1359 </table>
1360
1361</div>
1362
1363
1364<!-- Diapo [Choisir un conteneur] -->
1365<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide">
1366
1367 <h1>Choisir un conteneur</h1>
1368
1369 <ul class="incremental">
1370 <li class="non-incremental">
1371 <strong>List</strong> :
1372 <ul>
1373 <li>si on a besoin d'ins&eacute;rer ou de supprimer au milieu</li>
1374 <li>insertion en temps constant</li>
1375 <li>acc&egrave;s au n-i&egrave;me &eacute;l&eacute;ment en it&eacute;rant depuis le 1er</li>
1376 </ul>
1377 <br />
1378 </li>
1379 <li>
1380 <strong>Vector</strong> :
1381 <ul>
1382 <li>si on a besoin d'acc&eacute;der au n-i&egrave;me &eacute;l&eacute;ment</li>
1383 <li>insertion et suppression peuvent &ecirc;tre co&ucirc;teuses</li>
1384 <li>tr&egrave;s efficace lorsqu'on a &agrave; parcourir le conteneur</li>
1385 </ul>
1386 <br />
1387 </li>
1388 <li>
1389 <strong>Map</strong> :
1390 <ul>
1391 <li>listes associatives</li>
1392 <li>listes maintenues tri&eacute;es lors de l'insertion de nouveaux &eacute;l&eacute;ments</li>
1393 </ul>
1394 </li>
1395 </ul>
1396
1397</div>
1398
1399
1400
1401<!-- Diapo -->
1402<div style="border-style: none; display: none; visibility: hidden; position: absolute;" class="slide" id="thanks">
1403
1404 <p>Questions ?</p>
1405
1406</div>
1407
1408</body>
1409
1410</html>
1411
1412 1371 cp ../../../interfaces\ -\ copie/basic/src/G4UIQt.cc ../interfaces/basic/src/.
1413 1372 opendiff ../../../visualization\ -\* .
1414 1373 opendiff ../../../visualization\ -\ copie/* .
1415 1374 opendiff ../../../visualization\ -\ copie .
1416 1375 cvs update -A
1417 1376 cp ../../../visualization\ -\ copie/OpenGL/include/G4OpenGLQtViewer.hh OpenGL/include/.
1418 1377 cp ../../../visualization\ -\ copie/OpenGL/include/G4OpenGLViewer.hh OpenGL/include/.
1419 1378 cp ../../../visualization\ -\ copie/OpenGL/src/G4OpenGLQtViewer.cc OpenGL/src/.
1420 1379 cp ../../../visualization\ -\ copie/OpenGL/src/G4OpenGLStoredQtViewer.cc OpenGL/src/.
1421 1380 cp ../../../visualization\ -\ copie/OpenGL/src/G4OpenGLStoredViewer.cc OpenGL/src/.
1422 1381 cp ../../../visualization\ -\ copie/OpenGL/src/G4OpenGLViewer.cc OpenGL/src/.
Note: See TracBrowser for help on using the repository browser.