| Üye GİRİŞİ |
Türden bağımsız bir toplama algoritması
int toplam(int const * bas, int const * son)
{
int sonuc = 0;
for ( ; bas != son; ++bas)
{
sonuc += *bas;
}
return sonuc;
}
int toplam_int(int const * bas, int const * son)
{
/* ... */
}
double toplam_double(double const * bas, double const * son)
{
double sonuc = 0;
for ( ; bas != son; ++bas)
{
sonuc += *bas;
}
return sonuc;
}


Algoritmamızın bu son hali, C++'ın standart kütüphanesinin <numeric> başlığında tanımlanan 'accumulate'e çok benzemiş oldu.#include <iostream>
using std::cout;
template <class SonucTuru, class SayiTuru>
SonucTuru toplam(SayiTuru const * bas,
SayiTuru const * son,
SonucTuru sonuc)
{
for ( ; bas != son; ++bas)
{
sonuc += *bas;
}
return sonuc;
}
#define OGE_SAYISI(x) (sizeof(x) / sizeof(*(x)))
int main()
{
int const tamsayilar[] = { 7, 12, 30, 42 };
double const onToplam = 0.123;
cout << toplam(tamsayilar,
tamsayilar + OGE_SAYISI(tamsayilar),
onToplam) << ' ';
}
C++'ın şablonlarının küçük bir uygulaması olarak kullandığımız toplama almak gibi basit bir algoritmanın bile bir miktar tasarım gerektirdiğini de görmüş olduk.#include <iostream>
#include <numeric>
using namespace std;
#define OGE_SAYISI(x) (sizeof(x) / sizeof(*(x)))
int main()
{
int const tamsayilar[] = { 7, 12, 30, 42 };
double onToplam = 0.123;
cout << accumulate(tamsayilar,
tamsayilar + OGE_SAYISI(tamsayilar),
onToplam) << ' ';
}
| acehreli 14.06.2003 | |
| Rating : 10 üzerinden 8.48 |
Yorum ekle