1

我想将诸如 [-1.0, 1.0] 之类的间隔划分为一组离散的等距点,每个点之间具有指定的距离或步长。例如,如果步长为 0.1,我的函数将返回一个数组:

-1.0, -0.9, -0.8,...., 0.9, 1.0. 

现在使用矢量容器的一种方法如下:

vector<double> Range;      

double Step = 0.1;

Range.push_back(-1.0); 

for(unsigned int i=0; i<int(2.0/Step); i++)
{
    Range.push_back(Range.back() + Step); 
}

有我可以使用的 STL 库函数吗?

4

2 回答 2

0

下面是一个使用 generate 函数的例子。

#include <iostream>
#include <algorithm>
#include <vector>
#include <numeric>
#include <math.h>

using namespace std;

// The step interval
const double step = 0.1;

struct stepInterval {

   double current;

   stepInterval() :
      current (-1.0 - step) {
   }

   double operator()() {
      current += step;
      return current;
   }

} StepInterval;



int main () {
   // Calculate the vector size. Add 1 for zero.
   const int vectorSize = ceil(2.0 / step) + 1;

   // Create the vector
   vector<double> myvector (vectorSize);

   generate (myvector.begin(), myvector.end(), StepInterval);

   cout << "\nmyvector contains:";

   for (vector<double>::iterator it=myvector.begin();
        it!=myvector.end();
        ++it)  {
      cout << " " << *it;
   }
   cout << endl;

   return 0;
}
于 2010-08-25T18:20:10.790 回答
0

查看generate功能。您仍然需要编写一个用于递增的函数/函子,但这相对简单并且可以一直重复使用......

于 2010-08-25T08:50:20.800 回答