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ş:
Daha iyi bir şekilde iki liste, her yi...
döngü numaralama üzerinde yineleme içi...
Yineleme tüm dosyaları bir dizin için ...
Bir şekilde yineleme-sayaç Java'l...
C 11 ters aralığı tabanlı için döngü...