SORU
26 Kasım 2008, ÇARŞAMBA


C işlevinden dönen birden fazla değeri

Tercih edilen bir yol C bir işlevin birden fazla değer döndürmek için var mı? Örneğin, iki tamsayı bölen ve bölüm ve kalan iki döndüren bir fonksiyon düşünün. Ben yaygın bir şekilde referans parametreleri kullanmak için:

void divide(int dividend, int divisor, int& quotient, int& remainder);

Bir varyasyon bir değer döndürür ve bir referans parametresi ile diğer geçirilecek

int divide(int dividend, int divisor, int& remainder);

Başka bir yol tüm sonuçları içerir ve bu dönüş için bir yapı bildirmek için:

struct divide_result {
    int quotient;
    int remainder;
};

divide_result divide(int dividend, int divisor);

Bu yollardan biri, genellikle tercih edilen, ya da başka bir öneriniz var mı?

Edit: gerçek dünya kodu, ikiden daha fazla sonuç olabilir. Ayrıca farklı türde olabilir.

CEVAP
26 Kasım 2008, ÇARŞAMBA


İki değer döndürmek için std::pair (genellikle typedef) kullanıyorum. İki veya daha fazla sonuç döndürecektir boost::tuple (C 11 ve daha yeni, std::tuple var) bakmak gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C++

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Justin Davis

    Justin Davis

    14 Ocak 2008
  • kev5124

    kev5124

    9 Kasım 2008
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012