我想初始化一个大小为200的double数组,它的值从0到199,从索引0到c ++中的199.我知道我可以通过一个简单的For循环来做到这一点,但有没有办法像这样初始化双数组?
谢谢
Ant*_*ony 10
并不是的.for循环是您的最佳选择:
double array[200];
for(int i = 0; i < 200; i++)
array[i] = static_cast<double>(i);
Run Code Online (Sandbox Code Playgroud)
这是一种方式std::generate:
template <typename T>
class nexter
{
public:
nexter(T start = T())
: value_(start)
{
}
T operator()()
{
return value_++;
}
private:
T value_;
};
int main()
{
double data[200];
std::generate(data, data + 200, nexter<double>());
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是C++ 0x,则可以跳过仿函数:
int main()
{
double data[200];
double next = 0.0;
std::generate(data, data + 200, [&next]() { return next++; } );
}
Run Code Online (Sandbox Code Playgroud)
const int SIZE = 200;
double array[SIZE];
std::copy(counting_iterator<int>(0), counting_iterator<int>(SIZE), array);
Run Code Online (Sandbox Code Playgroud)