使用迭代器迭代数组

时间:2016-04-12 08:55:18

标签: c++ arrays split iterator

我想使用迭代器迭代一个简单的双数组。我想知道我怎么能这样做。

我想拥有的是这样的:

void foo(double* array, size_t size)
{
    std::vector<double> real(size);
    std::vector<double> imag(size);
    auto arrBegin = std::begin(array); // this of course doesn't work
    auto arrEnd = std::end(array); // this of course doesn't work

    bool toggle = false;

    std::partition_copy(arrBegin, arrEnd, std::begin(real), std::begin(imag),
                [&toggle] (int) {return toggle != toggle});

    //Do other stuff
}

正如你们中的一些人可能猜到的那样,数组是一个交错的复数,我想将它分成实部和虚部的数组。

如果我知道数组的大小,是否有办法使用我作为指针接收的数组,或者我是否需要为数组使用类似std :: vector的单独类来处理迭代器?

我很高兴使用std :: partition_copy(),但我对其他想法持开放态度。

注意:我不能使用std :: array,因为在编译期间不知道数组大小。 std :: vector是可能的,但我实际上想看看是否可以在没有std :: vector的情况下执行它,因为我从API接收数组并希望按原样使用它。

1 个答案:

答案 0 :(得分:2)

使用wwwarray作为迭代器。

您可能还想使用inserter-iterators作为向量。

array + size