2017-02-13 1 views
1

내가 벡터 생성하는 경우 :어떻게 벡터에서 정수 값의 범위를 인쇄하는

vector<int> numbers;

및 일부 값을 밀어 : 난 단지 숫자 1을 통해 밖으로 인쇄 할 수있는 방법

for (int i=1; i<=39; ++i) numbers.push_back(i); 

10 예를 들면?

그 후에도 15-30을 인쇄하십시오. 따라서 numbers.begin()은 아마도 거기에 적용되지 않습니다.

답변

3

예를 들어 숫자 1부터 10까지만 인쇄 할 수 있습니까? 당신이 Range-V3 library에 액세스 할 수있는 경우

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, " "); 

를 인쇄 당신은 또한 할 수 있습니다

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, " ")); 
} 

출력 :... 오늘, 당신은 전체 코드가 좁혀 수 있습니다 범위-TS 다음 C++ 표준에 포함을위한 파이프 라인에 있는지

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 

참고. 아마도 C++ 20일까요?

전체 예제 Range-V3을 사용하여 매우 명확한 Live On Coliru

+0

! 덕분에, 이것은 훌륭한 해결책이었습니다. – taeraeyttaejae

+0

왜 사람들이 대답 downvote ... :-) – WhiZTiM

+0

그래, 난 정말 구글이나 stackoverflow 검색 에서이 답변을 찾지 못했 재미있는 이유가 있어야합니다 ... – taeraeyttaejae

관련 문제