Beispiel Range-For
main.cpp — 1.3 KB
Dateiinhalt
// // main.cpp // for // // Created by Klaus Ahrens on 12.11.12. // Copyright (c) 2012 Klaus Ahrens. All rights reserved. // #include <iostream> #include <vector> class Range{ bool up; const int dim; std::unique_ptr<int[]> values; public: Range(int a, int b): up(b>=a), dim(up?b-a:a-b) { values.reset(new int[dim+1]); int delta = up?1:-1; int max = (a>b)?a:b; int min = (a>b)?b:a; for (int i = 0, v = up?min:max; i <= dim; ++i, v+=delta) values[i]=v; } const int* begin() { return &values[0]; } const int* end() {return &values[dim]+1;} }; int main(int argc, const char * argv[]) { int array[] = { 1, 2, 3, 4, 5 }; for (int x : array) { x*=2; std::cout<< x << " "; } std::cout<<"\n"; for (int x : array) { std::cout<< x << " "; } std::cout<<"\n"; for (int& x : array) { x*=2; std::cout<< x << " "; } std::cout<<"\n"; for (int x : array) { std::cout<< x << " "; } std::cout<<"\n"; std::vector<int> v { {2,3,5,7,11,13,17,19} }; for (int x : v) { std::cout<< x << " "; } std::cout<<"\n"; for (int x : Range{25,15}) { std::cout<< x << " "; } std::cout<<"\n"; return 0; }