我想使用迭代器迭代一个简单的双数组。我想知道我怎么能这样做。
我想拥有的是这样的:
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接收数组并希望按原样使用它。