【发布时间】:2018-09-22 19:31:39
【问题描述】:
我需要从数组 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 循环。
我知道我可以编写自己的函数来执行此操作,但我想知道是否有内置方法可以执行此操作。是的,我在这里省略了异常处理和数据检查以提高可读性。
【问题讨论】:
-
myVector.resize(dataCount); std::iota(myVector.begin(), myVector.end(), vectorData);. -
另外,构造函数必须没有返回类型。此外,
myVector(dataCount, NULL)不是有效的代码。
标签: c++ arrays pointers vector