是否有任何std容器可以像std :: array一样固定大小,但是大小不是编译时间,而是运行时?
我想将std::array
中存储的一些数据的一部分传递给std::acculumate
和类似的函数。我不想使用std :: vector(在嵌入式平台上工作),因此我正在寻找介于两者之间的东西。
假设这样的代码,我想要的东西代替array_part
:
#include <array>
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
int main()
{
std::array<float,100> someData;
// fill the data
int dataCount = 50;
std::array_part<float> partOfData(someData.data(),dataCount)); // <<<<< here
const auto s_x = std::accumulate(partOfData.begin(), partOfData.end(), 0.0);
}
如果没有这样的容器,我如何包装我拥有的原始数据并将它们呈现给std::accumulate
和其他标准算法?
答案 0 :(得分:1)
std::accumulate
接受迭代器。您可以传递包含感兴趣范围的迭代器:
auto start = partOfData.begin() + 42;
auto end = partOfData.begin() + 77;
const auto s_x = std::accumulate(start, end, 0.0);
或者,您可以推出自己的非拥有容器类对象。有关示例,请参阅this question。