| Autor |
Nachricht |
rik
Autor
Benutzerprofil
Anmeldungsdatum: 18.05.2006
Beiträge: 36
|
rik Autor
09:32:54 20.06.2006 Titel: |
|
Zitieren |
| Freak_Coder schrieb: | Sollte das nicht so aussehen:
| C/C++ Code: | const data_type& find(key_type key) const
{
const_iterator cb_iter(callback_map.find(key));
if(cb_iter == callback_map.end())
throw std::runtime_error("key not found");
return cb_iter->second;
}
| |
| C/C++ Code: | const data_type& find(key_type key) const
{
const_iterator cb_iter(callback_map.find(key));
if(cb_iter == callback_map.end())
throw std::runtime_error("key not found");
return cb_iter->second;
}
| |
| C/C++ Code: | const data_type& find(key_type key) const
{
const_iterator cb_iter(callback_map.find(key));
if(cb_iter == callback_map.end())
throw std::runtime_error("key not found");
return cb_iter->second;
}
| |
|
Der Datentyp data_type ist in den Beispielen ein Pointer auf eine Funktion bzw. einen Funktor. Das Kopieren von Pointern ist relativ billig, da nur eine Adresse zurückgeliefert werden muss.
Ein Referenz sollte nur dann zurückgegeben werden, wenn der Aufwand für das Kopieren von Objekten groß ist. |
_________________ Erik Griessmann
|
|
 |
KasF
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.12.2004
Beiträge: 2378
|
KasF Mitglied
10:03:42 20.06.2006 Titel: |
|
Zitieren |
| rik schrieb: |
Der Datentyp data_type ist in den Beispielen ein Pointer auf eine Funktion bzw. einen Funktor. Das Kopieren von Pointern ist relativ billig, da nur eine Adresse zurückgeliefert werden muss.
Ein Referenz sollte nur dann zurückgegeben werden, wenn der Aufwand für das Kopieren von Objekten groß ist. |
Achso, ok. Wenn das nur auf die Beispiele hier spezialisiert ist, dann ist das ja OK |
_________________ Um C++ zu beherrschen muss man schon for( ;; ) fragen ob er genug Zeit für einen hat ...
Zuletzt bearbeitet von KasF am 10:04:10 20.06.2006, insgesamt 1-mal bearbeitet |
|
 |
rik
Autor
Benutzerprofil
Anmeldungsdatum: 18.05.2006
Beiträge: 36
|
rik Autor
10:34:57 20.06.2006 Titel: |
|
Zitieren |
| Freak_Coder schrieb: | Achso, ok. Wenn das nur auf die Beispiele hier spezialisiert ist, dann ist das ja OK  |
Ähm! So war das nicht gemeint. Sinn und Zweck des Patterns ist es ja aufrufbare Entitäten zu speichern. Das sind nun mal Pointer oder Funktoren. Man könnte das ganze natürlich noch intelligenter machen und z. B. mit Type-Traits-Template-Klassen feststellen ob der Datentyp ein Pointer oder ein Objekt ist. Abhängig davon könnte man einen Rückgabe-Datentyp definieren. Man hätte auch einen zusätzlichen Template-Parameter einführen können, um den Benutzer entscheiden zu lassen, ob per Value oder per Referenz zurückgegeben wird.
Ich habe das nicht gemacht, damit der Blick für das Wesentliche nicht verloren geht. |
_________________ Erik Griessmann
|
|
 |
KasF
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.12.2004
Beiträge: 2378
|
KasF Mitglied
12:37:24 20.06.2006 Titel: |
|
Zitieren |
Ahh, OK |
_________________ Um C++ zu beherrschen muss man schon for( ;; ) fragen ob er genug Zeit für einen hat ...
|
|
 |
phlox81
Moderator
Benutzerprofil
Anmeldungsdatum: 21.04.2001
Beiträge: 7208
|
phlox81 Moderator
01:31:13 07.03.2008 Titel: |
|
Zitieren |
|
 |
KasF
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.12.2004
Beiträge: 2378
|
KasF Mitglied
02:45:09 07.03.2008 Titel: |
|
Zitieren |
|
 |
phlox81
Moderator
Benutzerprofil
Anmeldungsdatum: 21.04.2001
Beiträge: 7208
|
phlox81 Moderator
11:51:31 07.03.2008 Titel: |
|
Zitieren |
|
 |
funky cat
Mitglied
Benutzerprofil
Anmeldungsdatum: 07.03.2008
Beiträge: 51
|
funky cat Mitglied
22:01:11 07.03.2008 Titel: |
|
Zitieren |
als pdf sehen die Artikel 1000 mal besser aus, als diese blöden HTML seiten. |
|
|
|
 |
rik
Autor
Benutzerprofil
Anmeldungsdatum: 18.05.2006
Beiträge: 36
|
rik Autor
16:27:20 10.03.2008 Titel: |
|
Zitieren |
| funky cat schrieb: |
als pdf sehen die Artikel 1000 mal besser aus, als diese blöden HTML seiten. |
Schau doch mal im Kapitel 8 des Artikels. Dort gibt's die Sourcen zum downloaden. |
_________________ Erik Griessmann
|
|
 |