SORU
11 HAZİRAN 2015, PERŞEMBE


Bir şekilde döngü için en N eleman aralığı tabanlı kullanarak üzerinde yineleme var mı?

Benim için ise güzel bir şekilde ispat en fazla N eleman bir kap kullanarak dizi temel döngü ve/veya algoritmaları standart kütüphane (işte tüm mesele bu, biliyorum ben sadece "eski" için döngü ile bir durum).

Temel olarak, bu Python kodu için karşılık gelen bir şey arıyorum:

for i in arr[:N]:
    print(i)

CEVAP
11 HAZİRAN 2015, PERŞEMBE


Ben kişisel olarak da this this cevap ( 1 hem de), sadece bilgi artırmak için kullanmak istiyorsunuz gibi kullanabilirsiniz adaptörleri destek var. Dava için - sliced en uygun gibi görünüyor:

#include <boost/range/adaptor/sliced.hpp>
#include <vector>
#include <iostream>

int main(int argc, const char* argv[])
{
    std::vector<int> input={1,2,3,4,5,6,7,8,9};
    const int N = 4;
    using boost::adaptors::sliced;
    for (auto&& e: input | sliced(0, N))
        std::cout << e << std::endl;
}

Önemli bir not: N sliced şöyle: distance(range) - çok daha güvenli ve daha yavaş versiyonu daha büyük olması gerekir

    for (auto&& e: input | sliced(0, std::min(N, input.size())))

- Basit, eski C/C yaklaşım kullanırdım bir kez daha - (bu soru istemediğini ;)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Liz Morgan

    Liz Morgan

    4 Aralık 2011
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008