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
das war so offensichtlich! Danke, das war eine brillante Lösung. – taeraeyttaejae
Es muss interessante Gründe geben, warum Leute Antworten ablehnen ... :-) – WhiZTiM
yeah, ich habe diese Antwort nicht wirklich von Google oder stackoverflow gefunden ... – taeraeyttaejae