如何从数组初始化指针的STL向量

时间:2018-04-12 15:09:38

标签: c++ arrays pointers vector

我需要从数组double *初始化std :: vector。这是当前的代码:

class MyClass {
...
    std::vector<double*> myVector;

    void MyClass(double* vectorData, size_t dataCount) {
        myVector(dataCount, NULL);
        for (unsigned int ii = 0; ii < dataCount; ++ii) {
            myVector.push_back(vectorData + ii );
        }
        ...
    }     
...
}

我想知道是否有一种很好的方法可以使用向量构造函数或myVector.fillWithPointers(myData,dataCount)之类的调用来替换for循环。

我知道我可以编写自己的函数来执行此操作,但我想知道是否有内置的方法来执行此操作。是的,我在这里省略了异常处理和数据检查的可读性。

1 个答案:

答案 0 :(得分:2)

您可能想要这个(修复代码中的所有其他编译问题):

#include <numeric>
#include <vector>
#include <iostream>

class MyClass {
  std::vector<double*> myVector;

public:
  MyClass(double* vectorData, size_t dataCount)
    : myVector(dataCount)
  {
    std::iota(myVector.begin(), myVector.end(), vectorData);
  }

  void DebugShowVectors()
  {
    for (double *d : myVector)
      std::cout << *d << "\n";
  }
};

int main()
{
  double data[] = { 1.1, 2.2, 3.3 };    
  MyClass instance(data, sizeof(data) / sizeof(data[0]));
  instance.DebugShowVectors();
}

但是我不确定在向量中存储指向double的指针而不是double本身的指针确实是一个好主意。