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

  • maxman.tv

    maxman.tv

    29 EKİM 2013
  • ShotgunSandwichENT

    ShotgunSandw

    3 EKİM 2012
  • Subscribe!!

    Subscribe!!

    3 EKİM 2009