的阵列最有效的方法我有一个像结构:返回struct成员
struct ohlc{
double open,high,low,close;
};
部分我的应用程序利用这些收集的。有时候打上时间戳。我的应用程序的另一部分使用第三方(封闭)库,它需要双倍数组,例如关闭[]或打开[]等。
什么是最适合的容器和方法来返回一个双数组的开放[],关闭[]等。目前,我使用矢量和迭代整个集合创建阵列。有没有更有效的方法。
我可能会完全错误,我目前使用的结构?我拥有的是价格/价格的价格。我尝试保留M1,M5,M15和H1蜡烛棒的集合,即OHLC数据。通常我只需要100小时的数据。随着价格出现新的一分钟,我可以随时删除最长的分钟,从而保持100小时的数据。由于H1,M15,M5,M1都可以根据时间戳询价价格的基础数据创建,出于性能原因,是否还需要持有独立的H1,M15等。我问这是因为它是重复的数据?
编辑:我目前的方法对我的通常目的很好,但现在我是'回测试',我在我的代码中投掷了数百万个出价/要价,并且需要尽可能高效。后面的测试目前还需要几个小时才能完成
我从我的收藏结构的回报如下:
std::vector<double> Series::EODSeries::open(const_iterator iter, unsigned long num) const
{
vector<double> v;
if(iter == end())
return v;
// reverse iterator init skips the first element in collection. We must manually insert the current element.
v.insert(v.begin(), iter->second.open);
unsigned i = 1;
for(const_reverse_iterator rev_iter(iter); i < num && rev_iter != rend(); ++rev_iter, ++i)
v.insert(v.begin(), rev_iter->second.open);
return v;
}
你是如何返回vector的,并且调用者是否需要拥有它的副本?他们需要能够写信给它吗?也许一个代码片段显示了如何从矢量中获取数组并将其传递给第三方API将会有所帮助。 – juanchopanza
会将示例添加到我的原始 – stratman