限制要在函数中作为参数传递的矢量位置

时间:2015-08-11 09:25:22

标签: c++ vector

我想限制要在函数上传递的索引。

main.cpp中:

typedef vector<int *> my_int;
my_int a;
for (int i = 0; i < 8; ++i)
    a.push_back(i);  

calc1(a); //(Note:This is wrong) start the data from 0 until 3 only
calc2(a.begin() + 5); //(Note:This is wrong) start data from 4 to 7 only

我想将它传递给我的函数calc1()和calc2()。

int calc1(my_int *d)
{
    for (my_int::iterator it = d.begin(); i != d.end(); ++i)
        printf("%d ", *it);
}

输出应为:

0 1 2 3

int calc2(my_int *d)
{
    for (my_int::iterator it = d.begin(); i != d.end(); ++i)
        printf("%d ", *it);
}

输出应为:

4 5 6 7

我的语法不是特别准确,因为我还没有测试过。但我只想知道如何实现这种情况。

1 个答案:

答案 0 :(得分:4)

仅编写一个这样的函数就足够了

false

并称之为

int calc( std::vector<int>::iterator first, std::vector<int>::iterator last );

或者您可以按以下方式声明该功能

calc( my_int.begin(), std::next( my_int.begin(), 4 ) );
calc( std::next( my_int.begin(), 4 ), my_int.end() );

并将其称为

int calc_n( std::vector<int>::iterator first, size_t n );