2017-02-13 3 views

Antwort

3

Wie kann ich zum Beispiel nur die Zahlen 1 bis 10 ausdrucken?

std::copy(numbers.begin(), numbers.begin() + 10, std::ostream_iterator(std::cout, " "); 

auch danach, ausdrucken 15-30

std::copy(numbers.begin() + 15, numbers.begin() + 30, std::ostream_iterator(std::cout, " "); 

Wenn Sie Zugang zum Range-V3 library haben ... Sie können auch:

for(auto x : numbers | ranges::view::slice(0, 10)) 
    std::cout << x << " "; 

... Heute können Sie das gesamte Code haben verengt:

#include <iostream> 
#include <range/v3/all.hpp> 

int main() { 
    std::vector<int> numbers = ranges::view::closed_iota(1, 40); 

    ranges::copy(numbers | ranges::view::slice(0, 10), ranges::ostream_iterator<int>(std::cout, " ")); 
    std::endl(std::cout); 
    ranges::copy(numbers | ranges::view::slice(15, 30), ranges::ostream_iterator<int>(std::cout, " ")); 
} 

Ausgänge:

1 2 3 4 5 6 7 8 9 10 
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 

Beachten Sie, dass Ranges-TS an der Pipeline ist für die Aufnahme in die nächste C++ Standard. C++ 20 vielleicht?

Vollständiges Beispiel Verwenden von Range-V3 Live On Coliru

+0

das war so offensichtlich! Danke, das war eine brillante Lösung. – taeraeyttaejae

+0

Es muss interessante Gründe geben, warum Leute Antworten ablehnen ... :-) – WhiZTiM

+0

yeah, ich habe diese Antwort nicht wirklich von Google oder stackoverflow gefunden ... – taeraeyttaejae

Verwandte Themen