繁体   English   中英

如何从向量中打印整数值范围

[英]how to print range of integer values from a vector

如果我创建一个向量:

vector<int> numbers;

并推送一些值:

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

例如,我怎样才能打印出数字1到10?

此后,打印15-30,所以numbers.begin()可能不适用于那里。

例如,我怎样才能打印出数字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库 ...您还可以:

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 

请注意, Ranges-TS正在管道中,以包含在下一个C ++标准中。 也许是C ++ 20?

完整示例在Coliru上使用Range-V3 Live

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM