Как я могу напечатать только цифры с 1 по 10, например?
std::copy(numbers.begin(), numbers.begin() + 10, std::ostream_iterator(std::cout, " ");
Кроме того, после того, распечатайте 15-30
std::copy(numbers.begin() + 15, numbers.begin() + 30, std::ostream_iterator(std::cout, " ");
Если у вас есть доступ к Range-V3 library ... Вы также можете:
for(auto x : numbers | ranges::view::slice(0, 10))
std::cout << x << " ";
... Сегодня вы можете иметь весь код сужен до:
#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, " "));
}
Выходы:
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
Обратите внимание, что Изменяется-TS на трубопроводе для включения в стандарт на следующий C++. Возможно, C++ 20?
Полный пример Использование Range-V3 Live On Coliru
Это было так очевидно! спасибо, это было блестящее решение. – taeraeyttaejae
Должны быть интересные причины, по которым люди ответят вниз ... :-) – WhiZTiM
да, я действительно не нашел этот ответ из поиска google или stackoverflow ... – taeraeyttaejae